Как исправить ошибку ошибки crt1.o,crti.o в сборке TinyCCompiler(TCC) из Source?
Как исправить ошибку crt1.o,crti.o в сборке TinyCCompiler(TCC) из Source?
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-компилятор $ 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-компилятор $ 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/)
как можно исправить ошибку?
я могу установить TCC с помощью sudo apt install 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
$ / 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
Как исправить ошибку включенных файлов не найдено?!
Связанный вопрос: Как исправить ошибку ошибки включаемых файлов в TinyCCompiler(TCC)?
2 ответа
Проект LuaDist направлен на создание полной экосистемы Lua с использованием CMake. Поэтому вы должны использовать систему сборки CMake вместо оригинальных make-файлов. Обычно вы делаете следующий вызов CMake.
$ mkdir _build && cd _build
$ cmake .. -DCMAKE_INSTALL_PREFIX=_install
$ cmake --build . --target install
После этого у вас должен быть рабочий tcc в _install/bin
Извините, это не совсем ответ на вопрос, но изначально у меня была такая же проблема, и это мое решение (Ubuntu 18.04):
git clone https://github.com/TinyCC/tinycc
cd tinycc
./configure
make
make test
cd ..
echo '#include <stdio.h>
int main() {
printf("Hi!\n");
}' > a.c
tinycc/tcc -Btinycc a.c -o a.o
./a.o