0

コードを libmagic にリンクしているときに、この問題に苦しんでいます。

test.c:(.text+0x16): undefined reference to `magic_open'
test.c:(.text+0x50): undefined reference to `magic_load'
test.c:(.text+0x60): undefined reference to `magic_error'
test.c:(.text+0x84): undefined reference to `magic_close'
test.c:(.text+0x9e): undefined reference to `magic_file'
test.c:(.text+0xba): undefined reference to `magic_close'
collect2: ld returned 1 exit status

ただし、この問題は gcc バージョン > 4.4 の場合にのみ発生します。コンパイルするには、次のコマンドを使用しています。

gcc -L/usr/lib/ -lmagic  test.c -o test

libmagic を使用するコード例は、こちら にあります。確認しましたが、この問題も表示されます。明らかに、libmagic と libmagic-dev が私のシステム (Ubuntu 14.04) にインストールされています。

gcc のバージョンをダウングレードする以外に、この問題を処理する方法はありますか?

4

1 に答える 1

1

これは FAQ であり、お使いの GCC のバージョンとは関係ありません。

あなたのコンパイルが成功したとは思わないgcc-4.3

引数の順序は非常に重要ですgcc(たとえばthisを参照)。オブジェクト ファイルとライブラリは最後に配置する必要があります (高レベルのものから低レベルのものへ)。試してみてください

 gcc  -Wall -g test.c -lmagic  -o mytest

ところで、実行可能ファイルを呼び出さないでくださいtest(ただし、たとえばmytest) test。多くの場合、シェルが組み込まれているためです。

于 2015-09-03T13:51:48.627 に答える