web-dev-qa-db-ja.com

C ++ for OSXでの共有ライブラリの作成

C++でプログラミングを始めたばかりで、同じコード(ほとんどはユーティリティ関数)を何度も何度も書く必要があることに気付きました。

そこで、共有ライブラリを作成して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スクリプト)またはMakefile)を作成して、プラットフォーム間でこれを簡単にコンパイルできるようにする必要があると思います。何かヒントはありますか?

17
user277465

使用する -dynamiclib OS Xで動的ライブラリをコンパイルするオプション:

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

そして、それをクライアントアプリケーションで使用します。

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

あなたが投稿したリンクはCとCコンパイラを使用しています。 C++をビルドしているので:

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