On 31.03.2011 18:29, Dmitry Katsubo wrote: > Dear developers, > > I hope somebody in this maillist can help me with my (perhaps trivial) > problem. > > I have written autoconf script, which among all other checks performs > the following test: > > AC_LANG([C++]) > ... > AC_SEARCH_LIBS([pnm_readpnminit], [netpbm pnm]) > > The resulting configure script works fine for Debain x32 and Open SuSE > x32, but when it came to x64 platform the following problem occurred for > the above mentioned test, that generates the following program: > > === conftest_orig.cpp === > #ifdef __cplusplus > extern "C" > #endif > char pnm_readpnminit (); > int > main () > { > return pnm_readpnminit (); > ; > return 0; > } > === end === > > # g++ -o conftest -g -Wl,--as-needed conftest_orig.cpp -lnetpbm -lm > /usr/lib64/libnetpbm.so: undefined reference to `log' > /usr/lib64/libnetpbm.so: undefined reference to `pow' > collect2: ld returned 1 exit status > > When I modified the test program by removing the "#ifdef", it starts to > work (as expected by configure script): > > === conftest.cpp === > char pnm_readpnminit (); > int > main () > { > return pnm_readpnminit (); > ; > return 0; > } > === end === > > # g++ -o conftest -g -Wl,--as-needed conftest.cpp -lnetpbm -lm > /root/tmp/cc2mdVNX.o: In function `main': > /work/conftest.cpp:5: undefined reference to `pnm_readpnminit()' > collect2: ld returned 1 exit status > > My questions to the community are: > - Why extern "C" causes GCC not to find "log" and "pow" from libm, > needed by libnetpbm? > - Why exactly the same configure script works OK for x32 platform? > - How to overcome the problem?
caused by the ld --no-add-needed default? Link libnetpbm.so with -lm. See http://wiki.debian.org/ToolChain/DSOLinking -- To UNSUBSCRIBE, email to debian-gcc-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/4d94b0c4.60...@debian.org