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? Thank you so much in advance for any help. -- With best regards, Dmitry -- 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/4d94abd9.4010...@mail.ru