У меня есть проект, который связан с различными общими библиотеками, а также с Boost. Тестирование этого на компьютерах, отличных от моих, оказалось сложным, поскольку различные варианты Linux поставляются с различными версиями Boost. Я бы предпочел не загружать и компилировать ту же версию Boost на каждой машине.Как вы статически связываете библиотеки Boost?
Есть ли способ связать мою программу статически только с библиотеками Boost и иметь все, что связано нормально? Я попытался связать все статически (-статический), но это вызывает другие проблемы (а именно, lGL не найден). Есть ли другой потенциальный способ, которым я мог бы упаковать только необходимые динамические библиотеки с моей программой (скажем, в ту же папку, что и исполняемый файл) и распространять ее таким образом?
ошибка Ссылка при попытке связать все статически:
g++ -static -o"acmserver" ./src/acmserver.o ./src/airplane.o ./src/bullet.o ./src/control.o ./src/detail.o ./src/game.o ./src/gamelog.o ./src/gamelogitem.o ./src/guns.o ./src/map.o ./src/missile.o ./src/missilepod.o ./src/object.o ./src/server.o -lboost_system -lboost_filesystem -lboost_thread -lboost_serialization -lboost_date_time -lpthread -lGLU -lGL
/usr/bin/ld: cannot find -lGL
collect2: ld returned 1 exit status
make: *** [acmserver] Error 1
EDIT (РАСТВОР):
count0 упоминается именно то, что я искал. В Eclipse я удалил все библиотеки Boost (например, boost_system) из Project -> Properties -> C/C++ Build -> Settings -> GCC C++ Linker -> Библиотеки -> Библиотеки (-l). Затем я добавил файлы Boost .a (например, /usr/lib/libboost_system.a) в разделе Project -> Properties -> C/C++ Build -> Settings -> GCC C++ Linker -> Разное -> Другие объекты. Я также удалил «-статический» из флагов компоновщика. Это создало исполняемый файл со всеми добавочными библиотеками, связанными статически, а не динамически.
Именно это я и искал! Мне просто пришлось удалить -статический "и добавить файлы .a. – JuiceboxHero
Правильно, что -статический должен идти, мой плохой. – count0