2010-09-07 2 views
2

во время компиляции dynlinktest.c это дает следующее сообщение об ошибке:Что делает опция `cc`` -ldl` в следующей команде?

УниПро @ ubuguest: ~ $ куб.см dynamiclinktest.c -o dynamiclinktest /tmp/ccli8dp2.o: В функции main': dynamiclinktest.c:(.text+0x53): undefined reference to dlopen» dynamiclinktest.c :(.text + 0x83): не определено ссылка на dlsym' dynamiclinktest.c:(.text+0x109): undefined reference to dlclose» collect2: LD возвращается статус 1 выхода

после использования куб.см dynlinktest.c -o dynlinktest -ldl он работает. Я не понял почему это необходимо, используя -ldl?

изменить1: оставить пространство перед ошибкой.

+0

Попробуйте «человек cc». Он даст вам некоторую информацию о вашем компиляторе и его параметрах. – harald

+0

Причина, по которой я вводил пробелы перед вашей командной строкой, и сообщение об ошибке было так, чтобы они правильно отформатировались; это соглашение, которое Stack Overflow использует для обозначения кода и дословного вывода. Я бы посоветовал вам добавить пробелы, чтобы облегчить чтение сообщения об ошибке. –

ответ

5

-ldl содержит ссылку на библиотеку с символами для загрузки динамических библиотек (например, dlopen).

Смежные вопросы