16 c++ linux macos stl shared-libraries
我刚开始用C++编程,我意识到我一直在不得不一遍又一遍地编写相同的代码(主要是实用函数).
所以,我正在尝试创建一个共享库并将其安装在PATH中,这样我就可以在需要时使用实用程序功能.
这是我到目前为止所做的: -
创建一个utils.h包含以下内容的文件: -
#include<iostream>
#include<string>
std::string to_binary(int x);
Run Code Online (Sandbox Code Playgroud)
创建一个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;
}
Run Code Online (Sandbox Code Playgroud)
按照这里提到的步骤: - 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),以便我可以使用它跨平台轻松编译.有什么提示吗?
lin*_*ild 29
使用-dynamiclib选项在OS X上编译动态库:
g++ -dynamiclib -o libutils.dylib utils.cpp
Run Code Online (Sandbox Code Playgroud)
然后在您的客户端应用程序中使用它:
g++ client.cpp -L/dir/ -lutils
Run Code Online (Sandbox Code Playgroud)
spa*_*ygw 10
您发布的链接是使用C和C编译器.因为您正在构建C++:
g++ -shared -o libYourLibraryName.so utils.o
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23195 次 |
| 最近记录: |