1

次のコマンドを実行して、プロジェクト内のさまざまなファイルをリンクします。

/opt/gcc-4.7-cilkplus/bin/gcc -g -Wall -l /opt/gcc-4.7-cilkplus/lib64/ -o exec main.o \
    mysql-client.o databaseConnection-common.o murmurhash3.o bloom-filter.o
    `mysql_config --cflags --libs\` -lcilkrts

オプション-l/opt/gcc-4.7-cilkplus/lib64/に注意してください

このコマンドを実行すると、次のエラーが発生します。

/ usr / bin / ld:-l / opt / gcc-4.7-cilkplus /lib64/が見つかりません

しかし、このディレクトリは私のシステムに存在します。誰でも間違いを教えてもらえますか?

4

3 に答える 3

3

-l(el)の後には、ディレクトリではなくライブラリを続ける必要があります。おそらくあなたは-Lまたは-I(目)を意味しました

于 2012-06-18T22:34:44.113 に答える
0

-l使用すべき場所を使用しています-L。このオプション-lはライブラリを指定しますが、-Lライブラリを検索するディレクトリを指定します。

またはとそれぞれの値-lの間にスペースがないことにも注意してください。-L

于 2012-06-18T22:35:17.447 に答える
0

-Lpath/to/lib -lnameは構文です ( と の後にスペースはありません-L) -l。たとえば、静的ライブラリにリンクする場合、これはリンクを次のように行う必要があることを意味しますpath/to/lib/libname.a

また、リンカーへの引数の順序が重要であることに注意してください。つまり、 objectAが libraryBを使用する場合は、Bその後に記述する必要があります。Bそれ自体が を使用している場合はC、最初Aに を言及し、次にBを言及する必要がありますC

したがって、コマンドはおそらく次のようになります。

/opt/gcc-4.7-cilkplus/bin/gcc -g -Wall -o exec main.o mysql-client.o \
databaseConnection-common.o murmurhash3.o bloom-filter.o \
`mysql_config --cflags --libs\` -L/opt/gcc-4.7-cilkplus/lib64/ -lcilkrts
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                Used -L and moved here
于 2012-06-18T22:36:52.737 に答える