用c++为OSX创建共享库
Creating shared libraries in 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),以便我可以使用它轻松地跨平台编译。有什么提示吗?
使用-dynamiclib
选项在OS X上编译动态库:
g++ -dynamiclib -o libutils.dylib utils.cpp
然后在您的客户端应用程序中使用它:
g++ client.cpp -L/dir/ -lutils
你发布的链接是使用C和C编译器。因为你正在构建c++:
g++ -shared -o libYourLibraryName.so utils.o
相关文章:
- 使用Boost Interprocess创建托管共享内存需要很长时间
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- C++共享库:创建和使用
- 在共享缓冲区内存中创建 ::std::string 对象
- 如何创建一个共享对象与另一个.所以在Cmake
- 是否可以/希望创建不可复制的共享指针模拟(以启用weak_ptr跟踪/借用类型语义)?
- 如何防止 CMake 在构建时(而不是在安装时)为共享库创建符号链接?
- 使用Bazel C++教程;build不创建/使用共享库
- 是否可以在专用内存空间中分配一个为提升管理共享内存而创建的对象
- 在创建共享库时,是否可以明确地排除某些类
- 是否可以在并行区域中为共享 2D 数组创建选定元素的线程本地副本?(共享,私有,障碍:OPenMP)
- 为什么从引用创建共享指针会复制对象?
- Android :需要在 c++ NDK 中创建共享首选项对象并存储一些布尔值
- 如何更改在 c++ 中使用提升库创建的共享内存的路径
- 使用多个标头使用 CMake 创建C++共享库
- Qt 创建器:将库移动到 subdir 后无法打开共享对象文件
- 如何从静态c和c++库创建共享c库
- 如何使用 c++ 创建对"everyone"具有共享访问权限的文件夹
- MSVC 2017 在共享库中创建模板函数的副本
- 使用CPACK时,请防止为已安装的共享库创建Namelink