如何修复在编译TinyCCompiler(TCC)源代码时出现crt1.o和crti.o错误?
https://github.com/LuaDist/tcc
我在我的桌面系统(Ubuntu)上测试了它,并在服务器(CentOS)上进行了测试。在两种操作系统中都显示错误。
错误信息:
tcc: file '/usr/lib/crt1.o' not found
tcc: file '/usr/lib/crti.o' not found
详情:
guest@Base:~/Gits/tcc-compiler$ ./configure --prefix=build
这行命令是在Linux系统中运行的。它将配置一个tcc编译器,并将其安装在名为“build”的目录中。Binary directory build/bin
TinyCC directory build/lib/tcc
Library directory build/lib
Include directory build/include
Manual directory build/man
Doc directory build/share/doc/tcc
Target root prefix
Source path /home/guest/Gits/tcc-compiler
C compiler gcc
CPU x86-64
Big Endian no
gprof enabled no
cross compilers no
use libgcc no
Creating config.mak and config.h
config.h is unchanged
guest@Base:~/Gits/tcc-compiler$ sudo make
....
....
guest@Base:~/Gits/tcc-compiler$ sudo make install
mkdir -p "build/bin"
install -s -m755 tcc "build/bin"
mkdir -p "build/man/man1"
install tcc.1 "build/man/man1"
mkdir -p "build/lib/tcc"
mkdir -p "build/lib/tcc/include"
install -m644 libtcc1.a "build/lib/tcc"
install -m644 include/stdarg.h include/stddef.h include/stdbool.h include/float.h include/varargs.h include/tcclib.h "build/lib/tcc/include"
mkdir -p "build/share/doc/tcc"
install -m644 tcc-doc.html "build/share/doc/tcc"
mkdir -p "build/lib"
install -m644 libtcc.a "build/lib"
mkdir -p "build/include"
install -m644 libtcc.h "build/include"
guest@Base:~/Gits/tcc-compiler$ cat test2.c
#include <tcclib.h>
int main()
{
printf("Hello World\n");
return 0;
}
错误:
guest@Base:~/Gits/tcc-compiler$ build/bin/tcc test2.c
这段文本是关于在终端中使用tcc编译器编译test2.c文件时出现的错误。tcc: file '/usr/lib/crt1.o' not found
tcc: file '/usr/lib/crti.o' not found
$ find /usr/ -name crti*
/usr/mipsel-linux-gnu/lib/crti.o
/usr/lib32/crti.o
/usr/libx32/crti.o
/usr/lib/i386-linux-gnu/crti.o
/usr/lib/x86_64-linux-gnu/crti.o
$ find /usr/ -name crt1*
/usr/mipsel-linux-gnu/lib/crt1.o
/usr/lib32/crt1.o
/usr/libx32/crt1.o
/usr/x86_64-w64-mingw32/lib/crt1.o
/usr/x86_64-w64-mingw32/lib/crt1u.o
/usr/i686-w64-mingw32/lib/crt1.o
/usr/i686-w64-mingw32/lib/crt1u.o
/usr/lib/i386-linux-gnu/crt1.o
/usr/lib/x86_64-linux-gnu/crt1.o
完整命令请参见https://pastebin.ubuntu.com/26211506/
如何修复错误?
我可以使用sudo apt install tcc
安装tcc。(没有错误和bug)
但我想从源代码安装tcc。(这里出现了错误)
新更新
tcc.h文件中:
#define CONFIG_TCC_CRT_PREFIX CONFIG_SYSROOT "/usr/lib"
我将 /usr/lib
更改为 /usr/lib/x86_64-linux-gnu
。
$ build/bin/tcc test.c -run
Hello World
$ /build/bin/tcc test.c
tcc: undefined symbol '__libc_csu_fini'
tcc: undefined symbol '__libc_csu_init'
tcc: undefined symbol '__libc_start_main'
tcc: undefined symbol 'printf'
新更新
#include <tcclib.h>
int main()
{
printf("Hello World\n");
return 0;
}
guest@Base:~/Gits/tcc-try/_build/_install/bin$ ./tcc test.c
这是一个命令行指令,用于运行名为“tcc”的程序,同时将“test.c”文件作为输入传递给该程序。test.c:1: include file 'tcclib.h' not found
tcc
的问题都适合在这里讨论。抱歉。但是你有一个源代码分发包,很可能其中包含了如何联系维护者的信息。 - John Bollinger