上記のフラグが参照しているライブラリは、どのようになっていますか? 私は他の何かのためにそれをどうやってしますか?linuxリンカの-lXiフラグを適切なlibに翻訳する方法は?
0
A
答えて
2
-lオプションは、ライブラリの名前を引数として取ります。この場合、ライブラリの名前はlibXi.a(またはlibXi.soなど)です。あなたのディストリビューションで利用可能な標準ライブラリの場所(/ usr/lib、/ lib、/ usr/local/libなど)でライブラリの外観を見つける。また、リンカーに-Lオプションを使用して追加のライブラリディレクトリを指定することもできます。
0
あなたのプログラムが正常にコンパイル、またはあなたが-lXi
を使用する別のプログラムを持っている場合、その後、あなたが行うことができる場合:たとえば
ldd /path/to/that/program | grep libXi
を:
$ ldd /usr/X11R6/bin/audacity | grep libXi
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x00007f53faaba000)
libXi.so.6 => /usr/lib/libXi.so.6 (0x00007f53f8e2c000)
そして、それは最も可能性が高いことを教えてくれますそのライブラリはです。 (構築プロセスはが検索パスを変更する可能性があるため、100%ではありませんが、通常はX11などの標準ライブラリではそうではありません)
そこから、あなたが気にしている場合、 Ubuntuの上の例やの.debベースのディストリビューションの場合:あなたはLDDを使用できない場合
$ dpkg --search /usr/lib/libXi.so.6
libxi6: /usr/lib/libXi.so.6
、その後、チェックランタイム共有ライブラリのリンクの検索パスを表示しますお使いのシステムの/etc/ld.so.conf
。 (。/lib
/及び/usr/lib
がデフォルトで含まれています)
最悪の場合、あなたはそれを見つけることができます:出力であるlibXiため
find/-regex '.*libXi\.\(a\|so\).*' 2> /dev/null
0
strace -f -e open gcc ... -lXi
ルック。