Linux Make将编译器选项解释为shell命令

Linux Make将编译器选项解释为shell命令,linux,compiler-errors,tiny-core-linux,Linux,Compiler Errors,Tiny Core Linux,我正在尝试使用autotools在Tiny Core Linux下编译fbsplash。在编译过程中,它崩溃说“LD:尝试静态链接到动态对象/Ur/Studio/LIb/LIbpng16。” 我已经去掉了这个选项,在Makefile中注释掉了选项“-all static”。现在它在之后崩溃了 /bin/bash: O2: not found /bin/bash: w: not found /bin/bash: DTARGET_KERNEL: not found 所有这些选项前面都有破折号。它看

我正在尝试使用autotools在Tiny Core Linux下编译fbsplash。在编译过程中,它崩溃说“LD:尝试静态链接到动态对象/Ur/Studio/LIb/LIbpng16。” 我已经去掉了这个选项,在Makefile中注释掉了选项“-all static”。现在它在之后崩溃了

/bin/bash: O2: not found
/bin/bash: w: not found
/bin/bash: DTARGET_KERNEL: not found
所有这些选项前面都有破折号。它看起来像:

fbcondecor_helper_CFLAGS = -O2 -w \...
fbcondecor_helper_CPPFLAGS = $(AM_CPPFLAGS) -DTARGET_KERNEL
但不知何故,我的shell将它们解释为没有破折号的命令。
怎么了?

首先,您没有使用自动工具。您正在使用使用自动工具生成的配置脚本。(如果您确实正在运行autoconf或autoeconf,则这是另一个问题,并且您有(更多)出错的空间。)在这两种情况下,您都不应该手动编辑生成的Makefile。(对“怎么了?”的简短回答是,“你编辑了Makefile”。)相反,当你运行
配置
时,添加
--禁用static

我对自动工具知之甚少;我已经习惯了./configure&&make。在本例中,我正在执行autoeconf-fiv&&automake&&./configure&&make。没有一些配置文件,所以autoconf不起作用,我必须执行autoeconf-fiv(我在互联网上读过这个解决方案);它继续尝试静态链接/usr/local/lib/libpng16.so,并给出了相同的错误。。。然后我尝试使用--disable shared进行配置,以防止它使用/usr/local/lib中的共享库,子目录中有静态lib,但出于某种原因它不使用它。顺便说一句,当我第一次在源根目录中运行'make'时,它开始编译libs/libjpeg/,并抱怨“make[3]:O2:command not found”(x10次)。然后我进入libs/libjpeg并从那里运行make;它编译得很好。然后我返回.././并重新启动make,它将libjpeg计算为make,并开始生成zlib,然后崩溃,出现相同的错误。因此我必须转到libs/zlib/并在那里运行make,并重复此过程,直到构建libs/子目录中的所有库“自动”。Grrr.Projects不应该要求其用户运行autoreconf,但这并不能解决您的问题。您可以尝试将标志传递给链接器,让它在查找/usr/local/lib之前先查找本地目录。也许
/configure--disable shared LDFLAGS=-L$(pwd)/libs
我的帖子缺少很多相关信息,我敢肯定,如果不查看所有场景,很难正确回答。(我尝试过这个标志选项,但没有帮助;这是一个老项目,最近一次更新是在2011年,我不知道它是否适用于最新版本的autotools。Autoconf抱怨一些未定义的…该死的…我在另一个操作系统下,无法给出准确的报价…一些未定义的常量,例如AM_INIT_LIBTOOL,或AM_CONDITIONAL。只有在这之后,我才会进行自动reconf——它创建一个工作配置。