18

我刚开始用 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),以便我可以用来跨平台轻松编译它。有什么提示吗?

4

2 回答 2

33

使用-dynamiclib选项在 OS X 上编译动态库:

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

然后在您的客户端应用程序中使用它:

g++ client.cpp -L/dir/ -lutils
于 2013-01-09T07:35:06.413 回答
11

您发布的链接使用 C 和 C 编译器。由于您正在构建 C++:

g++ -shared -o libYourLibraryName.so utils.o
于 2013-01-05T17:01:02.913 回答