我正在尝试编译当前代码:https://github.com/Cyan4973/zstd
但是当运行" make"命令我得到:
user@pc:~/dev/zstd$ make
make -C programs
make[1]: Entering directory `~/dev/zstd/programs'
cc -I../lib -DZSTD_VERSION=\"0.4.6\" -I../lib/legacy -I./legacy -DZSTD_LEGACY_SUPPORT=1 -O3 -std=c99 -Wall -Wextra -Wundef -Wshadow -Wcast-qual -Wcast-align -Wstrict-prototypes -Wstrict-aliasing=1 ../lib/zstd_compress.c ../lib/zstd_decompress.c ../lib/fse.c ../lib/huff0.c ../lib/legacy/zstd_v01.c ../lib/legacy/zstd_v02.c ../lib/legacy/zstd_v03.c ../lib/zstd_buffered.c zstdcli.c fileio.c legacy/fileio_legacy.c bench.c xxhash.c datagen.c -o zstd
/system/bin/sh: /system/bin/sh: --: unknown option
/system/bin/sh: /system/bin/sh: --: unknown option
/system/bin/sh: /system/bin/sh: --: unknown option
/system/bin/sh: /system/bin/sh: --: unknown option
/system/bin/sh: /system/bin/sh: --: unknown option
/system/bin/sh: /system/bin/sh: --: unknown option
/system/bin/sh: /system/bin/sh: --: unknown option
/system/bin/sh: /system/bin/sh: --: unknown option
/system/bin/sh: /system/bin/sh: --: unknown option
/system/bin/sh: /system/bin/sh: --: unknown option
/system/bin/sh: /system/bin/sh: --: unknown option
/system/bin/sh: /system/bin/sh: --: unknown option
/system/bin/sh: /system/bin/sh: --: unknown option
/system/bin/sh: /system/bin/sh: --: unknown option
/tmp/ccTBDu2H.o: file not recognized: File truncated
collect2: ld returned 1 exit status
make[1]: *** [zstd] Error 1
make[1]: Leaving directory `~/dev/zstd/programs'
make: *** [zstdprogram] Error 2
我检查了Makefile并且不包含任何" - ",/system/bin/sh
也不在我的计算机中,如果我复制/bin/sh
那么它不会改变任何东西
使用make -d
调试makefile也不会提供有关此问题的任何额外信息。
有什么想法吗?
我有ubuntu 12.04。
编辑:我发现它是GCC 4.6.4给出错误。女巫根本不具有描述性......
EDIT2:我在编译过程中使用clang
修复了它(一个较新的GCC也应该修复它),但是我将问题保持打开,因为我仍然不知道GCC有什么错误。此外,它可能对将来遇到同样问题的人有用。
答案 0 :(得分:0)
如果这是交叉编译,也许你有混合的主机和目标工具。当使用主机工具而不是目标工具来处理目标二进制文件(即链接目标文件)时,可能会发生这种情况。
答案 1 :(得分:0)
找到它,问题和解决方案与GCC无关。
我的~ /bin/
文件夹中有一个名为as
的脚本。因此,而不是使用as
(汇编程序编译器)应用程序,而是使用脚本(我很久以前创建的脚本作为adb shell
的别名)。
这导致在调用GCC时输出一堆错误,但仅仅因为GCC在某个时候调用汇编程序......就是这样。
这是一个非常愚蠢的错误。
自我注意:检查命令是否已经存在,然后用〜/ bin /中的内容覆盖它。