简体   繁体   English

Make似乎忽略了我的CFLAGS和LDFLAGS

[英]Make seems to ignore my CFLAGS and LDFLAGS

I am having trouble cross-compiling fuse-exfat. 我在交叉编译保险丝时遇到麻烦。 GCC can not find my fuse library. GCC找不到我的保险丝库。 I am running the build on a x64-64 machine and compiling for ARM. 我在x64-64机器上运行构建,并为ARM编译。

As you can see here, both the include files and the library is there: 如您在这里看到的,包含文件和库都在这里:

root@2a13b22d5372:/opt/sysroot/usr/lib# ls -al | grep fuse
-rwxr-xr-x 1 root root      943 Jul  5 16:31 libfuse.la
lrwxrwxrwx 1 root root       16 Jul  5 16:31 libfuse.so -> libfuse.so.2.9.9
lrwxrwxrwx 1 root root       16 Jul  5 16:31 libfuse.so.2 -> libfuse.so.2.9.9
-rwxr-xr-x 1 root root   719756 Jul  5 16:31 libfuse.so.2.9.9
lrwxrwxrwx 1 root root       17 Jul  5 15:53 libfuse3.so -> libfuse3.so.3.6.1
lrwxrwxrwx 1 root root       17 Jul  5 15:48 libfuse3.so.3 -> libfuse3.so.3.6.1
-rwxr-xr-x 1 root root   698096 Jul  5 15:47 libfuse3.so.3.6.1

root@2a13b22d5372:/opt/sysroot/usr/include# ls -al | grep fuse
drwxr-xr-x  2 root root   4096 Jul  5 16:31 fuse
-rw-r--r--  1 root root    246 Jul  5 16:31 fuse.h
drwxr-xr-x  2 root root   4096 Jul  5 16:03 fuse3

Running Configure does not give any errors. 运行配置不会给出任何错误。

root@2a13b22d5372:/opt/fuse-exfat-1.3.0# ./configure --prefix=/opt/sysroot --host=arm-linux-gnueabihf
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for arm-linux-gnueabihf-strip... arm-linux-gnueabihf-strip
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for arm-linux-gnueabihf-gcc... arm-linux-gnueabihf-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether arm-linux-gnueabihf-gcc accepts -g... yes
checking for arm-linux-gnueabihf-gcc option to accept ISO C89... none needed
checking whether arm-linux-gnueabihf-gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of arm-linux-gnueabihf-gcc... gcc3
checking for arm-linux-gnueabihf-gcc option to accept ISO C99... none needed
checking for arm-linux-gnueabihf-ranlib... arm-linux-gnueabihf-ranlib
checking for arm-linux-gnueabihf-ar... arm-linux-gnueabihf-ar
checking the archiver (arm-linux-gnueabihf-ar) interface... ar
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... 64
checking for arm-linux-gnueabihf-pkg-config... no
checking for pkg-config... /usr/bin/pkg-config
configure: WARNING: using cross tools not prefixed with host triplet
checking pkg-config is at least version 0.9.0... yes
checking for UBLIO... no
checking for FUSE... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating libexfat/Makefile
config.status: creating fuse/Makefile
config.status: creating Makefile
config.status: creating libexfat/config.h
config.status: libexfat/config.h is unchanged
config.status: executing depfiles commands

Make fails with "cannot find lib" error. Make失败,并显示“找不到lib”错误。

root@2a13b22d5372:/opt/fuse-exfat-1.3.0# LDFLAGS="-L/opt/sysroot/usr/lib" CFLAGS="-I/opt/sysroot/usr/include" make
Making all in libexfat
make[1]: Entering directory '/opt/fuse-exfat-1.3.0/libexfat'
make  all-am
make[2]: Entering directory '/opt/fuse-exfat-1.3.0/libexfat'
make[2]: Leaving directory '/opt/fuse-exfat-1.3.0/libexfat'
make[1]: Leaving directory '/opt/fuse-exfat-1.3.0/libexfat'
Making all in fuse
make[1]: Entering directory '/opt/fuse-exfat-1.3.0/fuse'
arm-linux-gnueabihf-gcc -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse -g -O2   -o mount.exfat-fuse mount_exfat_fuse-main.o ../libexfat/libexfat.a -lfuse -pthread
/usr/lib/gcc-cross/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lfuse
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:399: mount.exfat-fuse] Error 1
make[1]: Leaving directory '/opt/fuse-exfat-1.3.0/fuse'
make: *** [Makefile:363: all-recursive] Error 1

What am I missing? 我想念什么?

Based on the info here there's no way we can say for sure. 根据这里的信息,我们无法确定地说。

However, it's likely that the makefile sets the LDFLAGS and CFLAGS variables. 但是,makefile可能会设置LDFLAGSCFLAGS变量。 Variables assigned in the makefile will take precedence over variables obtained from the environment so your variable assignments are ignored. 在makefile中分配的变量将优先于从环境获取的变量,因此您的变量分配将被忽略。

I recommend you try passing the variable assignments on the make command line, rather than through the environment: 我建议您尝试在make命令行上而不是通过环境传递变量分配:

$ make LDFLAGS="-L/opt/sysroot/usr/lib" CFLAGS="-I/opt/sysroot/usr/include"

(PS It's almost always a bad idea to build things and run make commands as root--in fact it's almost always a bad idea to do anything as root, except for things that require it) (注:以root身份构建并运行make命令几乎总是一个坏主意-实际上,以root身份执行任何操作几乎总是一个坏主意,除非需要它的事情)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM