Как сделать библиотеку на С ++ в Linux - PullRequest
0 голосов
/ 24 ноября 2011

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

  1. Если я использую какую-либо библиотеку, такую ​​как boost, curl и т. Д., Могу ли я запустить ее без установки на клиентскую машину (я имею в виду что-то вроде включения всех jar-файлов библиотеки внутри проекта в Java)

  2. Я установил некоторую библиотеку или программное обеспечение в Linux. После этого, если я наберу в терминале, он пингует программное обеспечение. Например, php, после установки вы можете использовать php из терминала. Как это работает? Могу ли я использовать мой простой проект на C ++ для этого?

Ответы [ 3 ]

3 голосов
/ 24 ноября 2011
  1. Да. Вы используете процесс под названием static linking , который связывает все библиотеки в один большой исполняемый файл. В скриптах ./configure (из автоинструментов) вы используете флаг --enable-static. При сборке вашей программы вы используете флаг -static. Статические библиотеки - это библиотеки с суффиксами .a; разделяемые библиотеки используют .so, иногда с суффиксом номера версии).

  2. PHP - это не библиотека, это язык (то есть исполняемый файл), который предоставляет собственный интерфейс командной строки. Ваш исполняемый файл C ++ может работать аналогично, вам просто нужно получить данные из cin<iostream>) и записать результаты в cout, используя cerr для сообщений об ошибках.

Ваш заглавный вопрос: «Как создать библиотеку на c ++ в linux» (в отличие от использования библиотеки): Вы используете программу ar, чтобы связать несколько файлов .o в один файл .a библиотеки. Вы также можете использовать ranlib для очистки файла .a. Прочтите страницы man для этих команд, чтобы увидеть, как они используются.

2 голосов
/ 24 ноября 2011

1) Ответом на ваш Q1 является компиляция со статически связанными библиотеками.Например, с помощью компилятора gcc:

# gcc -static myfile.c -o myfile

2) Ответ вам Q2 добавляет абсолютный путь к исполняемому файлу в $ PATHПеременная среды.Например, в оболочке Bash:

# export PATH = $ {PATH}: / home / user / pathofexecutable

Вышеуказанные настройки будут временными только для того терминала, который выделать.Чтобы сделать его доступным для всех терминалов на вашем компьютере, добавьте указанную выше команду экспорта в файл / home / user / .bashrc .

1 голос
/ 24 ноября 2011

Для вопроса 1 вы хотите скомпилировать программу как статический исполняемый файл.(Просто передайте -static в g ++.) Это сделает программу намного больше, поскольку в нее должна быть включена копия содержимого, обычно хранящегося в виде библиотек.

Для вопроса 2 я почти уверен, что вы имеете ввидупрограмма в PATH.Введите echo $PATH, чтобы увидеть путь на вашем текущем компьютере.Если вы установите свою программу в один из этих каталогов, она будет работать из любого места.(Скорее всего /usr/local/bin/)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...