Очень странное поведение компоновщика

Это странно, потому что я смог получить приведенную ниже ошибку. уйти, удалив ссылку на libm.

gcc -o example example.o -Wl -L/home/kensey/cdev/lib -L/usr/lib/x86_64-linux-gnu   -lmysqlclient -lpthread -lz -L/usr/lib/x86_64-linux-gnu -lm -lrt -ldl -lcdev -L/home/kensey/www.tools/gplot-lib -lgplot -L/home/kensey/www.tools/gd1_3ret -lgd -lxml2 -lcurl
/usr/bin/ld: /home/kensey/www.tools/gplot-lib/libgplot.a(set.o): undefined reference to symbol 'floor@@GLIBC_2.2.5'
/usr/bin/ld: note: 'floor@@GLIBC_2.2.5' is defined in DSO /usr/lib/x86_64-linux-gnu/libm.so so try adding it to the linker command line
/usr/lib/x86_64-linux-gnu/libm.so: could not read symbols: Invalid operation
collect2: ld returned 1 exit status

Итак, если я удалю часть -lmкоманды, я не получу ошибку. Однако мне интересно, знает ли кто-нибудь, почему удаление ссылки на необходимую библиотеку исправит это. Как компоновщик узнает, в какой библиотеке искать? Кроме того, есть ли способ запросить встроенный исполняемый файл и сказать: «В какой библиотеке вы разрешили ссылку на« пол »? очевидно, происходит что-то, чего я не понимаю, и это беспокоит меня...

45
задан Qantas 94 Heavy 27 November 2013 в 03:06
поделиться