【发布时间】:2012-12-19 20:13:54
【问题描述】:
我刚开始使用 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),以便我可以用来跨平台轻松编译它。有什么提示吗?
【问题讨论】:
-
只是半相关的,但是通过
std::bitset将int转换为0s 和1s 的字符串更容易:std::string to_binary(int v) { return std::bitset<sizeof(int)*CHAR_BIT>(v).to_string();} -
您不需要在您的
$PATH中安装您的libuki.so,而只需在您的$LD_LIBRARY_PATH中(例如,可能在您的$HOME/lib/中)
标签: c++ linux macos stl shared-libraries