2012-06-18 2 views
1

Я запускаю следующую команду, чтобы связать разные файлы в моем проекте.Ошибка при соединении с gcc?

/opt/gcc-4.7-cilkplus/bin/gcc -g -Wall -l /opt/gcc-4.7-cilkplus/lib64/ -o exec main.o \ 
    mysql-client.o databaseConnection-common.o murmurhash3.o bloom-filter.o 
    `mysql_config --cflags --libs\` -lcilkrts 

Примечание опция -l /opt/gcc-4.7-cilkplus/lib64/

Когда я запускаю эту команду я получаю эту ошибку:

/usr/bin/ld: cannot find -l/opt/gcc-4.7-cilkplus/lib64/

, но этот каталог присутствует в моей системе. Может кто-нибудь, пожалуйста, сообщите об ошибке.

ответ

3

-l (el) должен сопровождаться библиотекой, а не каталогом. Возможно, вы имели в виду -L или -I (глаз)

+1

'-L' сообщает компоновщик каталог для поиска. Это почти наверняка '-L'. – steveha

+0

мой плохой. Я понял. Можете ли вы указать другое место, чтобы указать эту библиотеку-компоновщик, чтобы я не включал тогда, делая -L каждый раз (например, какую-то переменную пути, которую gcc ищет каждый раз перед связыванием). –

+0

Переменная среды LIBRARY_PATH – TJD

0

Вы используете -l, где вы должны использовать -L. Опция -l указывает библиотеку, тогда как -L указывает каталог, в котором нужно искать библиотеки.

Обратите также внимание на то, что между -l или -L и его соответствующим значением не существует места.

0

-Lpath/to/lib -lname - это синтаксис (без пробелов после -L и -l). Например, если ссылаться на статическую библиотеку, это означает, что ссылка должна быть сделана с помощью path/to/lib/libname.a

Также обратите внимание, что порядок аргументов для компоновщика важен. То есть, если объект A использует библиотеку B, B должен быть записан после него. Если B сам использует C, то следует упомянуть сначала A, затем B, а затем C.

Ваша команда поэтому, вероятно, выглядеть следующим образом:

/opt/gcc-4.7-cilkplus/bin/gcc -g -Wall -o exec main.o mysql-client.o \ 
databaseConnection-common.o murmurhash3.o bloom-filter.o \ 
`mysql_config --cflags --libs\` -L/opt/gcc-4.7-cilkplus/lib64/ -lcilkrts 
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
           Used -L and moved here 
Смежные вопросы