Создание разделяемых библиотек в С++ для OSX - программирование

Создание разделяемых библиотек в С++ для OSX

Я только начал программировать на С++, и я понял, что мне приходится писать один и тот же код снова и снова (в основном служебные функции).

Итак, я пытаюсь создать общую библиотеку и установить ее в PATH, чтобы я мог использовать функции утилиты всякий раз, когда мне нужно.

Вот что я сделал до сих пор: -

Создайте файл utils.h со следующим содержимым: -

#include<iostream>
#include<string>
std::string to_binary(int x);

Создайте файл utils.cpp со следующим содержимым: -

#include "utils.h"

std::string to_binary(int x) {
  std::string binary = "";
  while ( x > 0 ) {
    if ( x & 1 ) binary += "1";
    else binary += "0";
    x >>= 1;
  }
  return binary;
}

Следуйте приведенным здесь шагам: http://www.techytalk.info/c-cplusplus-library-programming-on-linux-part-two-dynamic-libraries/

  • Создайте объектный код библиотеки: g++ -Wall -fPIC -c utils.cpp

Но поскольку ссылка выше предназначена для Linux, она не работает на OSX. Может ли кто-нибудь предлагать читать ресурсы или предлагать советы о том, как я могу скомпилировать и установить эти объекты в пути на машине OSX?

Кроме того, я предполагаю, что должен быть способ сделать эту кросс-платформу (т.е. написать набор инструкций (bash script) или Makefile), чтобы я мог использовать, чтобы скомпилировать это легко через платформы. Любые намеки на это?

4b9b3361

Ответ 1

Используйте параметр -dynamiclib для компиляции динамической библиотеки в OS X:

g++ -dynamiclib -o libutils.dylib utils.cpp

И затем используйте его в своем клиентском приложении:

g++ client.cpp -L/dir/ -lutils

Ответ 2

Вы отправили ссылку на C и компилятор C. Поскольку вы строите С++:

g++ -shared -o libYourLibraryName.so utils.o