2013-09-04 1 views
1

На моем компьютере с малиной PI я скомпилировал компилятор tcc из источника (в/usr/local/src). Когда я связываюсь с библиотекой в ​​/ usr/lib, tcc не может найти ее, поэтому мне нужно добавить -L/usr/lib в команду tcc. Как настроить и включить tcc для включения/usr/lib в свой путь к библиотеке?Как сделать tcc поиск библиотек в/usr/lib?

[email protected] /usr/local/src/tcc-0.9.26 $ tcc -vv 
tcc version 0.9.26 (ARM Hard Float Linux) 
install: /usr/local/lib/tcc/ 
crt: 
    /usr/lib/arm-linux-gnueabihf 
libraries: 
    /usr/lib/arm-linux-gnueabihf 
    /lib/arm-linux-gnueabihf 
    /usr/local/lib/arm-linux-gnueabihf 
include: 
    /usr/local/include 
    /usr/local/include/arm-linux-gnueabihf 
    /usr/include 
    /usr/include/arm-linux-gnueabihf 
    /usr/local/lib/tcc/include 
elfinterp: 
    /lib/ld-linux-armhf.so.3 

ответ

0

Оказывается, что нам нужно использовать опцию libpaths, а также указать библиотеку по умолчанию директорий (выход из tcc -vv). Мы можем также добавить стандартные каталоги /lib и /usr/local/lib:

# ./configure --libpaths=/usr/local/lib/arm-linux-gnueabihf:/lib/arm-linux-gnueabihf:/usr/lib/arm-linux-gnueabihf:/usr/local/lib:/lib:/usr/lib 
1

Это вариант конфигурации при компиляции tcc. Если вы хотите использовать двоичный tcc-дистрибутив, вам придется продолжить использование опции -L.

Однако компиляция tcc должна быть очень простой. Это приблизительные этапы:

% git clone git://repo.or.cz/tinycc.git 
% cd tinycc 
% ./configure --libpaths=/usr/lib 
% make 

Есть больше вариантов. См.:

% ./configure --help 
Usage: configure [options] 
Options: [defaults in brackets after descriptions] 

Standard options: 
    --help     print this message 
    --prefix=PREFIX   install in PREFIX [/usr/local] 
    --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX 
          [same as prefix] 
    --bindir=DIR    user executables in DIR [EPREFIX/bin] 
    --libdir=DIR    object code libraries in DIR [EPREFIX/lib] 
    --tccdir=DIR    installation directory [EPREFIX/lib/tcc] 
    --includedir=DIR   C header files in DIR [PREFIX/include] 
    --sharedir=DIR   documentation root DIR [PREFIX/share] 
    --docdir=DIR    documentation in DIR [SHAREDIR/doc/tcc] 
    --mandir=DIR    man documentation in DIR [SHAREDIR/man] 
    --infodir=DIR   info documentation in DIR [SHAREDIR/info] 

Advanced options (experts only): 
    --source-path=PATH  path of source code [/Users/miki/projects/tinycc-so] 
    --cross-prefix=PREFIX use PREFIX for compile tools [] 
    --sysroot=PREFIX   prepend PREFIX to library/include paths [] 
    --cc=CC     use C compiler CC [gcc] 
    --extra-cflags=   specify compiler flags [-Wall -g -O2] 
    --extra-ldflags=   specify linker options [] 
    --strip-binaries   strip symbol tables from resulting binaries 
    --disable-static   make libtcc.so instead of libtcc.a 
    --disable-rpath   disable use of -rpath with the above 
    --with-libgcc   use /lib/libgcc_s.so.1 instead of libtcc.a 
    --enable-mingw32   build windows version on linux with mingw32 
    --enable-cygwin   build windows version on windows with cygwin 
    --enable-cross   build cross compilers 
    --enable-assert   enable debug assertions 
    --with-selinux   use mmap for exec mem [needs writable /tmp] 
    --sysincludepaths=... specify system include paths, colon separated 
    --libpaths=...   specify system library paths, colon separated 
    --crtprefix=...   specify locations of crt?.o, colon separated 
    --elfinterp=...   specify elf interpreter 

Возможно, вам также захочется установить tcc в сконфигурированные каталоги.

% make install 
+0

Насколько я знаю, установка '--libdir' таким образом заменит/USR/местные/Библиотека с/USR/Lib. Я хотел бы добавить/usr/lib в путь поиска библиотеки. –

+0

Даже если я настраиваю с помощью '--libdir =/usr/lib', мне все еще нужна опция -L, и я получаю тот же результат от' tcc -vv'. –

+0

Приношу свои извинения. Параметр должен быть --libpaths, а не --libdir. Они действительно имеют различный смысл. Я исправил свой ответ соответственно. – mikijov