如何修复来自Source的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
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: 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。(没有错误和错误)
但我想从源代码安装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
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;
}
test.c:1: include file 'tcclib.h' not found
相关问题:How fix Error of error of include files in TinyCCompiler(TCC)?
答案 0 :(得分:0)
LuaDist项目旨在使用CMake构建一个完整的Lua生态系统。因此,您应该使用CMake构建系统而不是原始的makefile。通常,您将执行以下CMake调用。
def merge_dict(x,y):
keys = list(set(x.keys() + y.keys()))
result = {}
for key in keys:
if key in x.keys():
z = x[key].copy()
if key in y.keys():
z.update(y[key])
result[key] = z
else:
result[key] = y[key]
result[k] = z
return result
dict3 = merge_dict(dict1,dict2)
在此之后你应该在_install / bin
中使用tcc