Подтвердить что ты не робот

Eclipse-cdt как связать со статической библиотекой

Fist, я запутался, должен ли я устанавливать библиотеки в Linker/Libraries или устанавливать их под "путь и символ". Я думаю, что они одинаковы. я прав?

в любом случае для моего вопроса - мне нужно связать статическую библиотеку, поэтому я пробовал несколько вещей:

Первая попытка. Я пытаюсь добавить gtest (это библиотека) и gtest path в библиотеке ссылок. таким образом, он скомпилирован и связан правильно, но не выполнен во время выполнения, поскольку при попытке загрузить общую библиотеку (я хочу статическую библиотеку!) ошибка

при загрузке разделяемых библиотек: libgtest.so.0

Вторая попытка. Я пытаюсь определить ее в пути и символе, добавив в библиотеки полный путь '/root/workspace/gmock/gtest/lib/.lib/libgtest.a'. в этом случае я получил ошибку в связи:

g++ -L/root/workspace/gmock/lib/.libs -L/root/workspace/gmock/gtest/lib/.libs -o "playground"  ./src/p.o ./src/playground.o   -lpthread -l/root/workspace/gmock/gtest/lib/.lib/libgtest.a -l/root/workspace/gmock/lib/.lib/libgmock.a
/usr/bin/ld: cannot find -l/root/workspace/gmock/gtest/lib/.lib/libgtest.a

Это сообщение dosnt дает ответ, а не объясняет, как вы определяете иначе связанные с static vs shared.

Спасибо

4b9b3361

Ответ 1

После много исследований и не связанных ответов. нашел это!!! Я нашел его в этой полезной ссылке для eclipse-cdt

По-видимому, библиотека должна существовать в рабочей области.

Ответ 2

Добавить путь/файл библиотеки в: Свойства - C/С++ Build - Настройки - GCC С++ Linker - Разное - Другие объекты

Ответ 3

Я построил библиотеку криптографии Botan как статическую библиотеку по причинам, которые я не хочу вдаваться сюда, и когда я выполнил все шаги на межобщинках, добавьте пути к библиотеке и укажите имя библиотеки без "lib", и ".a", мой проект был построен просто отлично, однако, когда я его запускал, я продолжал получать "неожиданно завершенные программы" (или подобные) ошибки. Наконец я понял, как это исправить. Перейдите в Project Properties > C/С++ Build > Settings > Cross g++ Linker и добавьте -static между ${COMMAND} и ${FLAGS}, поэтому вся строка выглядит так:

${COMMAND} -static ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}

Твой может отличаться. Я использую Eclipse Luna Service Release 2 (4.4.2), с проектом mingw-w64 mingw-builds w/gcc 4.9.2 в Windows 8.1.