2009-06-04 18 views
2

我正在使用Eclipse在C++中編寫程序。我想將它編譯爲Linux的庫,就像Windows中的DLL一樣。我如何做到這一點?你知道任何關於如何創建庫的教程嗎?使用Eclipse創建動態加載的Linux庫

我只是想明白,這是一個Linux的DLL的模擬和如何創建它。我會感謝一個小例子。

回答

9

在Linux中,DLL的等價物是(種類無論如何)共享對象(.so)。

你需要做這樣的事情:

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

看一看一些開源C++庫項目以獲取更多信息。 GTKMM就是其中之一。

當然,代替編譯手動一切我們強烈建議使用make文件IDE(如EclipseCDTKDevelop或{挑選自己喜歡這裏}),將創建一個你在幕後。

6

在UNIX/Linux中,世界DLL稱爲shared libraries,通常有.so.o擴展名。

請參閱共享庫上的Linux HOWTO

+0

.a不共享,但靜態庫 – jpalecek 2009-06-04 11:58:02

+0

我的意思是「.o」,而不是「.a」(更正)。 AIX使用「.o」。 – qrdl 2009-06-04 12:06:56

0

您可能想要更改符號的默認可見性。它可以提高性能。查看GCC wiki關於此主題的條目。

2006年由Ulrich Drepper編寫的paper描述了在UNIX系統上實現動態共享對象的正確方法。