2011/10/20 Romain Beauxis <romain.beau...@gmail.com>: > Hi, > > After some investigations, it turns out that ocamlopt actually calls > gcc at link time. Furthermore, g++ adds -lstdc++ to the command used > to link. > > Compiling an example program with ocamlopt and ocaml-taglib (-lstdc++ added): > > 14:19 toots@selassie ~/savonet-hg/ocaml-taglib/examples% ocamlopt > -verbose -cclib -v -I ../src unix.cmxa taglib.cmxa -o > tagutil tagutil.cmx > + as -o '/tmp/camlstartup15aa04.o' '/tmp/camlstartup6e0e5f.s' > + gcc -o 'tagutil' '-L../src' '-L/usr/lib/ocaml' > '/tmp/camlstartup15aa04.o' '/usr/lib/ocaml/std_exit.o' 'tagutil.o' > '../src/taglib.a' '/usr/lib/ocaml/unix.a' '/usr/lib/ocaml/stdlib.a' > '-ltaglib_stubs' '-ltag' '-lstdc++' '-lunix' '-v' > '/usr/lib/ocaml/libasmrun.a' -lm -ldl > > Linking previous example using gcc and -lstdc++: > > > 14:22 toots@selassie /tmp% gcc -v -lstdc++ foo.o -o foo > Using built-in specs. > Target: x86_64-linux-gnu > Configured with: ../src/configure -v --with-pkgversion='Debian > 4.4.5-8' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs > --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr > --program-suffix=-4.4 --enable-shared --enable-multiarch > --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib > --without-included-gettext --enable-threads=posix > --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib > --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug > --enable-objc-gc --with-arch-32=i586 --with-tune=generic > --enable-checking=release --build=x86_64-linux-gnu > --host=x86_64-linux-gnu --target=x86_64-linux-gnu > Thread model: posix > gcc version 4.4.5 (Debian 4.4.5-8) > COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.5/:/usr/lib/gcc/x86_64-linux-gnu/4.4.5/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.5/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.5/:/usr/lib/gcc/x86_64-linux-gnu/ > LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.5/:/usr/lib/gcc/x86_64-linux-gnu/4.4.5/:/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../:/lib/:/usr/lib/ > COLLECT_GCC_OPTIONS='-v' '-o' 'foo' '-mtune=generic' > /usr/lib/gcc/x86_64-linux-gnu/4.4.5/collect2 --build-id > --eh-frame-hdr -m elf_x86_64 --hash-style=both -dynamic-linker > /lib64/ld-linux-x86-64.so.2 -o foo > /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crt1.o > /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crti.o > /usr/lib/gcc/x86_64-linux-gnu/4.4.5/crtbegin.o > -L/usr/lib/gcc/x86_64-linux-gnu/4.4.5 > -L/usr/lib/gcc/x86_64-linux-gnu/4.4.5 > -L/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib -L/lib/../lib > -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../.. > -lstdc++ foo.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc > --as-needed -lgcc_s --no-as-needed > /usr/lib/gcc/x86_64-linux-gnu/4.4.5/crtend.o > /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crtn.o > > Same with g++:
Sorry: 14:25 toots@selassie /tmp% g++ -v foo.o -o foo Using built-in specs. Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 4.4.5-8' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.4.5 (Debian 4.4.5-8) COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.5/:/usr/lib/gcc/x86_64-linux-gnu/4.4.5/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.5/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.4.5/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.5/:/usr/lib/gcc/x86_64-linux-gnu/4.4.5/:/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-o' 'foo' '-shared-libgcc' '-mtune=generic' /usr/lib/gcc/x86_64-linux-gnu/4.4.5/collect2 --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=both -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o foo /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.4.5/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.4.5 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.5 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../.. foo.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/4.4.5/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crtn.o -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org