如何从源代码修复TinyCCompiler(TCC)中的crt1.o,crti.o错误?

https://github.com/LuaDist/tcc

我在我的台式机系统(ubuntu)上对此进行了测试,还在服务器(centos)上进行了测试。
在两个OS上,显示错误。

错误 :

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

$查找/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

$查找/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-运行
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
test.c:1: include file 'tcclib.h' not found

如何解决找不到包含文件的错误?

相关问题:How fix Error of error of include files in TinyCCompiler(TCC)?

最佳答案

LuaDist项目旨在使用CMake构建完整的Lua生态系统。因此,您应该使用CMake构建系统而不是原始的makefile。通常,您将执行以下CMake调用。

$ mkdir _build && cd _build
$ cmake .. -DCMAKE_INSTALL_PREFIX=_install
$ cmake --build . --target install

之后,您应该在_install/bin中有可用的tcc

关于c - 如何从源代码修复TinyCCompiler(TCC)中的crt1.o,crti.o错误修复?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47877533/

10-11 22:05