7

私はすべて同じライブラリに依存するいくつかのアプリケーションを作成しようとしてきましたが、ダイナミックライブラリが私の最初の考えでした。それで私は「ライブラリ」を書き始めました。

/* ThinFS.h */

class FileSystem {
public:
    static void create_container(string file_name); //Creates a new container 
};

/* ThinFS.cpp */
#include "ThinFS.h"
void FileSystem::create_container(string file_name) {
     cout<<"Seems like I am going to create a new file called "<<file_name.c_str()<<endl;
}

次に、「ライブラリ」をコンパイルします

g++ -shared -fPIC FileSystem.cpp -o ThinFS.o

次に、ライブラリを使用するファイルをすばやく作成しました。

#include "ThinFS.h"
int main() {
    FileSystem::create_container("foo");
    return (42);
}

それから私はそれをコンパイルしようとしました

g++ main.cpp -L. -lThinFS

ただし、次のエラーでコンパイルされません。

/usr/bin/ld: cannot find -lThinFS
collect2: ld returned 1 exit status

私は非常に明白な何かが欠けていると思います、私を助けてください:)

4

5 に答える 5

13

-lfoolibfoo.a現在のライブラリパスで(静的)または(共有)というライブラリを検索するため、ライブラリlibfoo.soを作成するには、次を使用する必要があります。g++ -shared -fPIC FileSystem.cpp -o libThinFS.so

于 2010-01-04T18:15:14.697 に答える
6

使用できます

g++ main.cpp -L. -l:ThinFS 

「コロン」を使用すると、ライブラリ名がそのまま使用され、「lib」のプレフィックスが必要になります。

于 2012-05-16T08:19:34.367 に答える
3

出力ファイルの名前はlibThinFS.soである必要があります。例:

g ++ -shared -fPIC FileSystem.cpp -olibThinFSそれで
于 2010-01-04T18:14:24.930 に答える
2

の結果はg++ -shared -fPIC FileSystem.cppオブジェクトファイルではないため、で終わることはできません.o。また、共有ライブラリには。という名前を付ける必要がありますlibXXX.so。ライブラリの名前を変更すると、機能します。

于 2010-01-04T18:15:06.710 に答える
0

この記事をチェックしてください。

http://www.yolinux.com/tokyoS/LibraryArchives-StaticAndDynamic.html

さまざまなタイプのライブラリを構築する方法に関する優れたリソース。また、それらを使用する方法と場所についても説明します。

于 2010-01-04T19:18:32.277 に答える