Скомпилировать общую библиотеку в программу? - PullRequest
0 голосов
/ 01 августа 2011

Я написал программу, которая использует общую библиотеку, установленную в моей системе.Эта библиотека редко устанавливается в других системах.Как мне скомпилировать мою программу, чтобы библиотеку не нужно было устанавливать в других системах?У меня есть исходный код библиотеки.Как лучше?

Другие системы, конечно же, имеют ту же архитектуру и ОС.

Ответы [ 2 ]

3 голосов
/ 01 августа 2011

Скомпилируйте ее как статическую библиотеку и свяжите ее с исполняемым файлом.

1 голос
/ 13 марта 2012

Хотя ОП решил свою проблему, ответив на другой вопрос, есть (как минимум) два способа втиснуть разделяемую библиотеку в ваш двоичный файл в случае, если

  • нет доступного исходного кода
  • нет доступного компилятора (или цепочки сборки)
  • статическая ссылка не работает или неясно, как
  • сохранить макет памяти - статическая ссылка изменит егои может «пробуждать» скрытые ошибки
  • для библиотеки LD_PRELOAD «постоянная ссылка» в исполняемый файл

Первый - это statifier (с открытым исходным кодом, но ограничен x86 и x86_64 и только объектным кодом)

Второе, что я знаю, это магический горностай (того же разработчика).Это закрытый исходный код, но разработчик дружелюбен к проектам с открытым исходным кодом, и у ermine есть преимущество поддержки большего количества платформ, а также возможность включать все необходимые файлы данных в свою виртуальную файловую систему.

http://statifier.sourceforge.net/ и http://www.magicermine.com/

...