(クロスコンパイル)Makefileでldのライブラリの場所を指定する方法は?

(クロスコンパイル)Makefileでldのライブラリの場所を指定する方法は?

私はgcc ARMバージョンを使ってpciutilsをコンパイルしています(しかしそれは問題ではありません。他のソースかもしれません)。

コンパイル時に必要なライブラリが見つからないため、プロセスは停止します。

/home/simo/development/gcc-armhf-yocto-sysroot/sysroots/i686-linux/usr/bin/arm-poky-linux-gnueabi/../../libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.9.2/ld: cannot find crt1.o: No such file or directory
/home/simo/development/gcc-armhf-yocto-sysroot/sysroots/i686-linux/usr/bin/arm-poky-linux-gnueabi/../../libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.9.2/ld: cannot find crti.o: No such file or directory
/home/simo/development/gcc-armhf-yocto-sysroot/sysroots/i686-linux/usr/bin/arm-poky-linux-gnueabi/../../libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.9.2/ld: cannot find crtbegin.o: No such file or directory
/home/simo/development/gcc-armhf-yocto-sysroot/sysroots/i686-linux/usr/bin/arm-poky-linux-gnueabi/../../libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.9.2/ld: cannot find -lz
/home/simo/development/gcc-armhf-yocto-sysroot/sysroots/i686-linux/usr/bin/arm-poky-linux-gnueabi/../../libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.9.2/ld: cannot find -lresolv
/home/simo/development/gcc-armhf-yocto-sysroot/sysroots/i686-linux/usr/bin/arm-poky-linux-gnueabi/../../libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.9.2/ld: cannot find -lgcc
/home/simo/development/gcc-armhf-yocto-sysroot/sysroots/i686-linux/usr/bin/arm-poky-linux-gnueabi/../../libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.9.2/ld: cannot find -lgcc_s
/home/simo/development/gcc-armhf-yocto-sysroot/sysroots/i686-linux/usr/bin/arm-poky-linux-gnueabi/../../libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.9.2/ld: cannot find -lc
/home/simo/development/gcc-armhf-yocto-sysroot/sysroots/i686-linux/usr/bin/arm-poky-linux-gnueabi/../../libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.9.2/ld: cannot find -lgcc
/home/simo/development/gcc-armhf-yocto-sysroot/sysroots/i686-linux/usr/bin/arm-poky-linux-gnueabi/../../libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.9.2/ld: cannot find -lgcc_s
/home/simo/development/gcc-armhf-yocto-sysroot/sysroots/i686-linux/usr/bin/arm-poky-linux-gnueabi/../../libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.9.2/ld: cannot find crtend.o: No such file or directory
/home/simo/development/gcc-armhf-yocto-sysroot/sysroots/i686-linux/usr/bin/arm-poky-linux-gnueabi/../../libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.9.2/ld: cannot find crtn.o: No such file or directory
collect2: error: ld returned 1 exit status
Makefile:103: recipe for target 'lspci' failed
make: *** [lspci] Error 1

しかし、例えば、crt1.o3つのディレクトリにあります。

/home/simo/development/gcc-armhf-yocto-sysroot/sysroots/overo-tcbootstrap/usr/lib/crt1.o
/home/simo/development/gcc-armhf-yocto-sysroot/sysroots/overo/usr/lib/crt1.o
/home/simo/development/gcc-armhf-yocto-sysroot/sysroots/overo/usr/include/glibc-locale-internal-cortexa8hf-vfp-neon-poky-linux-gnueabi/usr/lib/crt1.o

この問題をどのように回避できますか?これは他のソースコードにも役立ちます(複数のグループをコンパイルする必要があるため)。

ありがとうございます。

ベストアンサー1

通常、makefileに-L/path/to/libリンカフラグを追加します。しかし、これがあなたの特定の問題に対する良い解決策であるかどうかはわかりません。

おすすめ記事