2014-02-15 7 views
3

Я хотел бы знать, почемуг ++ ссылки библиотека ЛД не

g++ test1.o test2.o -o test.x -lgtk-x11-2.0 

работы, в то время как

ld 'r test1.o test2.o -o test.o -lgtk-x11-2.0 

дает:

ld: cannot find -lgtk-x11-2.0 

, если я явно не указать путь, добавив -L/usr/lib/i386-linux-gnu

I попробовал все, добавляя путь к $LD_LIBRARY_PATH или к ld.so.conf, но ничего не работает, и я не могу объяснить себе разницу между двумя вызовами.

В руководстве л.д. указано:

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

, но при попытке использования различных эмуляций (с использованием эмуляции -m *) подразумевается segfault (возможно, поскольку эмуляция по умолчанию elf_i386 является правильной).

Можете ли вы помочь мне пролить свет на эту тему?

ответ

1

Если вы хотите знать, о путях, используемых ld

ld --verbose | grep SEARCH 

обычно вы не хотите использовать ld явно для связи, это, вероятно, лучше выполнять все задачи с gcc в одиночку, и вы должны предпочесть последний над первым.

Если вы хотите узнать больше о gcc настройки

gcc -dumpspecs 

дает вам вкус того, что он хотел, чтобы взглянуть на внутренностях gcc, вы, вероятно, в конечном итоге взглянуть на gcc руководстве если вы серьезно относитесь к этому, но я не думаю, что это что-то стоит делать только ради этого.

Настройки, заданные в момент составления gcc, также могут быть важными, поэтому вы также должны узнать, как скомпилировать gcc из источника, если вы действительно хотите понять, как работают внутренние элементы.

Т.Л., д-р

Просто используйте gcc как для компиляции и компоновки, другие варианты, вероятно, не стоит.

1

gcc -print-search-dirs (или g++) отображает путь поиска библиотеки, используемый компилятором; /usr/lib/i386-linux-gnu, вероятно, встроен. Этот параметр передается компоновщику gcc, но не встроен в компоновщик.

Попробуйте добавить -v: g++ -v test1.o test2.o -o test.x -lgtk-x11-2.0 чтобы посмотреть, как активируется компоновщик.

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