Mail Archives: djgpp/2021/01/09/09:18:08
On Saturday, January 9, 2021 at 12:09:39 PM UTC, Witold Baryluk wrote:
> Hi,
>
> I am trying to build gcc 10.2.0 on Linux targeting i486 dos.
>
> I am using Debian testing, on amd64.
>
> My host compiler is gcc 10.2.1
>
> I did install binutils-djgpp 2.34 from Debian, but I also successfully compiled binutils djgpp 2.35 from upstream, using ./configure --target=i486-pc-msdosdjgpp --program-prefix=i486-pc-msdosdjgpp- && make -j32 && sudo make install
>
> Configuring gcc went fine:
>
>
> ./configure --target=i486-pc-msdosdjgpp --program-prefix=i486-pc-msdosdjgpp- --disable-lto --disable-libstdcxx --disable-libada --disable-libquadmath --enable-serial-configure --disable-objc-gc --disable-libgomp --disable-libssp --disable-libatomic --disable-libsanitizer --disable-libquadmath-support --with-system-zlib --disable-libphobos --enable-languages=c --disable-libstdcxx-pch --disable-nls --disable-decimal-float --disable-libhsail-rt --disable-gcov --disable-tls
>
> checking build system type... x86_64-pc-linux-gnu
> checking host system type... x86_64-pc-linux-gnu
> checking target system type... i486-pc-msdosdjgpp
> checking for a BSD-compatible install... /usr/bin/install -c
> checking whether ln works... yes
> checking whether ln -s works... yes
> checking for a sed that does not truncate output... /usr/bin/sed
> checking for gawk... gawk
> checking for libitm support... no
> checking for libvtv support... no
> checking for gcc... gcc
> checking whether the C compiler works... yes
> checking for C compiler default output file name... a.out
> checking for suffix of executables...
> checking whether we are cross compiling... no
> checking for suffix of object files... o
> checking whether we are using the GNU C compiler... yes
> checking whether gcc accepts -g... yes
> checking for gcc option to accept ISO C89... none needed
> checking for g++... g++
> checking whether we are using the GNU C++ compiler... yes
> checking whether g++ accepts -g... yes
> checking whether g++ accepts -static-libstdc++ -static-libgcc... yes
> checking for gnatbind... no
> checking for gnatmake... no
> checking whether compiler driver understands Ada... no
> checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1 $$f2
> checking for objdir... .libs
> checking for the correct version of gmp.h... yes
> checking for the correct version of mpfr.h... yes
> checking for the correct version of mpc.h... yes
> checking for the correct version of the gmp/mpfr/mpc libraries... yes
> checking for isl 0.15 or later... no
> required isl version is 0.15 or later
> *** This configuration is not supported in the following subdirectories:
> zlib target-libquadmath gnattools target-libstdc++-v3 target-libitm target-libvtv gotools target-libada target-libhsail-rt target-libphobos target-zlib target-libbacktrace target-libgfortran target-libgo target-libffi target-libobjc target-libgomp target-liboffloadmic target-libatomic target-libsanitizer target-libssp
> (Any other directories should still work fine.)
> checking for default BUILD_CONFIG...
> checking for --enable-vtable-verify... no
> checking for bison... bison -y
> checking for bison... bison
> checking for gm4... no
> checking for gnum4... no
> checking for m4... m4
> checking for flex... flex
> checking for flex... flex
> checking for makeinfo... makeinfo
> checking for expect... expect
> checking for runtest... no
> checking for ar... ar
> checking for as... as
> checking for dlltool... no
> checking for ld... ld
> checking for lipo... no
> checking for nm... nm
> checking for ranlib... ranlib
> checking for strip... strip
> checking for windres... no
> checking for windmc... no
> checking for objcopy... objcopy
> checking for objdump... objdump
> checking for otool... no
> checking for readelf... readelf
> checking for i486-pc-msdosdjgpp-cc... no
> checking for i486-pc-msdosdjgpp-gcc... no
> checking for i486-pc-msdosdjgpp-c++... no
> checking for i486-pc-msdosdjgpp-g++... no
> checking for i486-pc-msdosdjgpp-cxx... no
> checking for i486-pc-msdosdjgpp-gxx... no
> checking for i486-pc-msdosdjgpp-gcc... no
> checking for i486-pc-msdosdjgpp-gfortran... no
> checking for i486-pc-msdosdjgpp-gccgo... no
> checking for i486-pc-msdosdjgpp-gdc... no
> checking for ar... /usr/local/i486-pc-msdosdjgpp/bin/ar
> checking for as... /usr/local/i486-pc-msdosdjgpp/bin/as
> checking for dlltool... no
> checking for i486-pc-msdosdjgpp-dlltool... no
> checking for ld... /usr/local/i486-pc-msdosdjgpp/bin/ld
> checking for lipo... no
> checking for i486-pc-msdosdjgpp-lipo... no
> checking for nm... /usr/local/i486-pc-msdosdjgpp/bin/nm
> checking for objcopy... /usr/local/i486-pc-msdosdjgpp/bin/objcopy
> checking for objdump... /usr/local/i486-pc-msdosdjgpp/bin/objdump
> checking for otool... no
> checking for i486-pc-msdosdjgpp-otool... no
> checking for ranlib... /usr/local/i486-pc-msdosdjgpp/bin/ranlib
> checking for readelf... /usr/local/i486-pc-msdosdjgpp/bin/readelf
> checking for strip... /usr/local/i486-pc-msdosdjgpp/bin/strip
> checking for windres... no
> checking for i486-pc-msdosdjgpp-windres... no
> checking for windmc... no
> checking for i486-pc-msdosdjgpp-windmc... no
> checking where to find the target ar... pre-installed in /usr/local/i486-pc-msdosdjgpp/bin
> checking where to find the target as... pre-installed in /usr/local/i486-pc-msdosdjgpp/bin
> checking where to find the target cc... just compiled
> checking where to find the target c++... pre-installed
> checking where to find the target c++ for libstdc++... pre-installed
> checking where to find the target dlltool... pre-installed
> checking where to find the target gcc... just compiled
> checking where to find the target gfortran... pre-installed
> checking where to find the target gccgo... pre-installed
> checking where to find the target gdc... pre-installed
> checking where to find the target ld... pre-installed in /usr/local/i486-pc-msdosdjgpp/bin
> checking where to find the target lipo... pre-installed
> checking where to find the target nm... pre-installed in /usr/local/i486-pc-msdosdjgpp/bin
> checking where to find the target objcopy... pre-installed in /usr/local/i486-pc-msdosdjgpp/bin
> checking where to find the target objdump... pre-installed in /usr/local/i486-pc-msdosdjgpp/bin
> checking where to find the target otool... pre-installed
> checking where to find the target ranlib... pre-installed in /usr/local/i486-pc-msdosdjgpp/bin
> checking where to find the target readelf... pre-installed in /usr/local/i486-pc-msdosdjgpp/bin
> checking where to find the target strip... pre-installed in /usr/local/i486-pc-msdosdjgpp/bin
> checking where to find the target windres... pre-installed
> checking where to find the target windmc... pre-installed
> checking whether to enable maintainer-specific portions of Makefiles... no
> configure: creating ./config.status
> config.status: creating Makefile
>
>
> Then make -j32,
>
> and after a bit it fails:
>
>
> ...
> checking for init priority support... yes
> configure: updating cache ./config.cache
> configure: creating ./config.status
> config.status: creating Makefile
> config.status: creating auto-target.h
> mv -f .deps/libcp1.Tpo .deps/libcp1.Plo
> config.status: executing default commands
> /bin/bash ./libtool --tag=CXX --mode=link g++ -W -Wall -fvisibility=hidden -g -O2 -module -export-symbols ../.././libcc1/libcc1.sym -Xcompiler '-static-libstdc++' -Xcompiler '-static-libgcc' -o libcc1.la -rpath /usr/local/lib/../lib findcomp.lo libcc1.lo libcp1.lo names.lo callbacks.lo connection.lo marshall.lo -Wc,../libiberty/pic/libiberty.a
> mv -f .deps/libcc1plugin.Tpo .deps/libcc1plugin.Plo
> /bin/bash ./libtool --tag=CXX --mode=link g++ -W -Wall -fvisibility=hidden -g -O2 -module -export-symbols ../.././libcc1/libcc1plugin.sym -Xcompiler '-static-libstdc++' -Xcompiler '-static-libgcc' -o libcc1plugin.la -rpath /usr/local/lib/gcc/i486-pc-msdosdjgpp/10.2.0/plugin libcc1plugin.lo callbacks.lo connection.lo marshall.lo -Wc,../libiberty/pic/libiberty.a
> libtool: link: g++ -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/10/crtbeginS.o .libs/findcomp.o .libs/libcc1.o .libs/libcp1.o .libs/names.o .libs/callbacks.o .libs/connection.o .libs/marshall.o -L/usr/lib/gcc/x86_64-linux-gnu/10 -L/usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/10/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/10/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu/crtn.o -static-libstdc++ -static-libgcc ../libiberty/pic/libiberty.a -Wl,-soname -Wl,libcc1.so.0 -Wl,-retain-symbols-file -Wl,../.././libcc1/libcc1.sym -o .libs/libcc1.so.0.0.0
> libtool: link: g++ -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/10/crtbeginS.o .libs/libcc1plugin.o .libs/callbacks.o .libs/connection.o .libs/marshall.o -L/usr/lib/gcc/x86_64-linux-gnu/10 -L/usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/10/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/10/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu/crtn.o -static-libstdc++ -static-libgcc ../libiberty/pic/libiberty.a -Wl,-soname -Wl,libcc1plugin.so.0 -Wl,-retain-symbols-file -Wl,../.././libcc1/libcc1plugin.sym -o .libs/libcc1plugin.so.0.0.0
> Adding multilib support to Makefile in ../.././libgcc
> multidirs=
> with_multisubdir=
> make[2]: Entering directory '/home/user/gcc-10/gcc-10.2.0/i486-pc-msdosdjgpp/libgcc'
> Makefile:183: ../.././gcc/libgcc.mvars: No such file or directory
> make[2]: *** No rule to make target '../.././gcc/libgcc.mvars'. Stop.
> make[2]: Leaving directory '/home/user/gcc-10/gcc-10.2.0/i486-pc-msdosdjgpp/libgcc'
> make[1]: *** [Makefile:11367: all-target-libgcc] Error 2
> make[1]: *** Waiting for unfinished jobs....
> libtool: link: (cd ".libs" && rm -f "libcc1plugin.so.0" && ln -s "libcc1plugin.so.0.0.0" "libcc1plugin.so.0")
> libtool: link: (cd ".libs" && rm -f "libcc1.so.0" && ln -s "libcc1.so.0.0.0" "libcc1.so.0")
> libtool: link: (cd ".libs" && rm -f "libcc1plugin.so" && ln -s "libcc1plugin.so.0.0.0" "libcc1plugin.so")
> libtool: link: (cd ".libs" && rm -f "libcc1.so" && ln -s "libcc1.so.0.0.0" "libcc1.so")
> libtool: link: ( cd ".libs" && rm -f "libcc1.la" && ln -s "../libcc1.la" "libcc1.la" )
> libtool: link: ( cd ".libs" && rm -f "libcc1plugin.la" && ln -s "../libcc1plugin.la" "libcc1plugin.la" )
> mv -f .deps/libcp1plugin.Tpo .deps/libcp1plugin.Plo
> /bin/bash ./libtool --tag=CXX --mode=link g++ -W -Wall -fvisibility=hidden -g -O2 -module -export-symbols ../.././libcc1/libcp1plugin.sym -Xcompiler '-static-libstdc++' -Xcompiler '-static-libgcc' -o libcp1plugin.la -rpath /usr/local/lib/gcc/i486-pc-msdosdjgpp/10.2.0/plugin libcp1plugin.lo callbacks.lo connection.lo marshall.lo -Wc,../libiberty/pic/libiberty.a
> libtool: link: g++ -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/10/crtbeginS.o .libs/libcp1plugin.o .libs/callbacks.o .libs/connection.o .libs/marshall.o -L/usr/lib/gcc/x86_64-linux-gnu/10 -L/usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/10/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/10/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu/crtn.o -static-libstdc++ -static-libgcc ../libiberty/pic/libiberty.a -Wl,-soname -Wl,libcp1plugin.so.0 -Wl,-retain-symbols-file -Wl,../.././libcc1/libcp1plugin.sym -o .libs/libcp1plugin.so.0.0.0
> libtool: link: (cd ".libs" && rm -f "libcp1plugin.so.0" && ln -s "libcp1plugin.so.0.0.0" "libcp1plugin.so.0")
> libtool: link: (cd ".libs" && rm -f "libcp1plugin.so" && ln -s "libcp1plugin.so.0.0.0" "libcp1plugin.so")
> libtool: link: ( cd ".libs" && rm -f "libcp1plugin.la" && ln -s "../libcp1plugin.la" "libcp1plugin.la" )
> make[3]: Leaving directory '/home/user/gcc-10/gcc-10.2.0/host-x86_64-pc-linux-gnu/libcc1'
> make[2]: Leaving directory '/home/user/gcc-10/gcc-10.2.0/host-x86_64-pc-linux-gnu/libcc1'
> make[1]: Leaving directory '/home/user/gcc-10/gcc-10.2.0'
> make: *** [Makefile:938: all] Error 2
>
> real 1m58.747s
> user 23m34.388s
> sys 1m30.904s
> user AT debian:~/gcc-10/gcc-10.2.0$
>
>
>
> I tried, also --disable-shared, not change.
> Any help?
>
> Thanks in advance.
I found the issue.
You need to done configure and build in a separate directory (i.e. build). Building in the top level directory is not supported.
So:
mkdir build && cd build && ../configure ...... && make && sudo make install
This makes gcc happy. Still a bunch of options are needed.
I did manage to convince and use djgpp libraryes to link (-Iinclude/ -Llib/ -Blib/), and run under dosbox, with `cwsdpmi.exe -p` started first, and even use some IO in hello world program.
Nice.
- Raw text -