使用Eclipse创建动态加载的Linux库 我用Eclipse编写C++程序。我想把它编译成Linux的库,就像Windows中的DLL一样。我怎么能做到?你知道关于如何创建库的教程吗

使用Eclipse创建动态加载的Linux库 我用Eclipse编写C++程序。我想把它编译成Linux的库,就像Windows中的DLL一样。我怎么能做到?你知道关于如何创建库的教程吗,c++,c,linux,eclipse,C++,C,Linux,Eclipse,我只是想了解这是一个类似于Linux的DLL,以及如何创建它。我要感谢一个小例子。在UNIX/Linux世界中,DLL被称为共享库,通常具有。因此或.o扩展 在Linux中,DLL的等价物是(某种程度上)共享对象(.so) 您需要这样做: $ g++ -c -fPIC libfile1.cpp $ g++ -c -fPIC libfile2.cpp $ g++ -shared -o libyourlib.so libfile1.o libfile2.o 查看一些开源C++库项目以获取更多信息。

我只是想了解这是一个类似于Linux的DLL,以及如何创建它。我要感谢一个小例子。

在UNIX/Linux世界中,DLL被称为
共享库
,通常具有
。因此
.o
扩展


在Linux中,DLL的等价物是(某种程度上)共享对象(.so)

您需要这样做:

$ g++ -c -fPIC libfile1.cpp
$ g++ -c -fPIC libfile2.cpp
$ g++ -shared -o libyourlib.so libfile1.o libfile2.o

查看一些开源C++库项目以获取更多信息。是其中之一


当然,强烈建议不要手动编译所有内容,而是使用生成文件IDE(例如使用或{在此处选择您的收藏夹}),以便在幕后为您创建一个符号。

您可能需要更改符号的默认可见性。它可以提高性能。查看有关该主题的条目


Ulrich Drepper在2006年写了一篇文章,描述了在UNIX系统上实现动态共享对象的正确方法。

您应该在“g++-c…”调用中添加-fpic或-fpic选项。这是为了生成“独立于位置的代码”,这样Linux就可以在多个进程之间共享内存中的相同代码..a不是共享的,但静态库,o文件不是共享库-它们是对象文件AIX使用的.o”用于对象文件和共享库。至少在AIX4.x中是这样,我不记得5。