2016-06-20 6 views
0

Я скомпилировал gcc 5.4.0 (make, make install в папку без root) и экспортировал его в машину пыльников того же базового дистрибутива. Однако, когда я пытаюсь составить hello world на 2 машины, я получаю сообщение об ошибке для stdio.h и каскадное cstdio т.д.после компиляции gcc 5.4.0 какие папки заголовков для экспорта

для GCC я configure --prefix=/home/mybin --bindir=/home/mybin/bin --libdir=/home/mybin/lib и т.д. для всех доступных папок, как в --help.

На машине компиляции gcc кажется, что исходная папка /home/tmp/gcc-5.4.0/libstdc++-v3/include была установлена ​​в папку --includedir=/home/mybin/include со всеми вспомогательными каталогами.

Поиск stdio.h на машине компиляции 5.4.0 Я получаю несколько папок, содержащих версию stdio.h.

/home/tmp/gcc-5.4.0/libstdc++-v3/include/tr1/stdio.h 
/home/tmp/gcc-5.4.0/libstdc++-v3/include/c_compatibility/stdio.h 
/home/tmp/gcc-5.4.0/fixincludes/tests/base/rtldef/stdio.h 
/home/tmp/gcc-5.4.0/fixincludes/tests/base/stdio.h 
/home/tmp/gcc-5.4.0/libssp/ssp/stdio.h 
/home/tmp/gcc-5.4.0/gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h 

и поиск из --prefix=/home/mybin/ возвращает

/home/mybin/lib/gcc/x86_64-unknown-linux-gnu/5.4.0/include/ssp/stdio.h 
/home/mybin/include/c++/5.4.0/tr1/stdio.h 
/home/mybin/include/c_compatibility/stdio.h 

Так что я скопировал `` prefix =/дом/mybin/`папку на новую машину и пытались использовать

gcc -Wall -I/home/mybin/include/c_compatibility /home/myuser/test.c -o /home/myuser/hello 

это дает

In file included from /home/myuser/test.c:3:0: 
/home/mybin/include/c_compatibility/stdio.h:29:18: fatal error: cstdio: No such file or directory 

, НО у меня есть

/home/mybin/include/c++/5.4.0/tr1/cstdio 
/home/mybin/include/c++/5.4.0/cstdio 
/home/mybin/include/c_std/cstdio 
/home/mybin/include/c/cstdio 

так обновлена ​​

gcc -Wall -I/home/mybin/include/c_compatibility -I/home/mybin/include/c_std /home/myuser/test.c -o /home/myuser/hello 
In file included from /home/mybin/include/bits/c++config.h:482:0, 
       from /home/mybin/include/c_std/cstdio:44, 
       from /home/mybin/include/c_compatibility/stdio.h:29, 
       from /home/myuser/test.c:3: 
/home/mybin/include/bits/os_defines.h:39:22: fatal error: features.h: No such file or directory 
compilation terminated. 

НО у меня есть /home/mybin/include/c++/5.4.0/parallel/features.h

gcc -Wall -I/home/mybin/include/c_compatibility -I/home/mybin/include/c_std /home/myuser/test.c -o /home/myuser/hello 
In file included from /home/mybin/include/bits/c++config.h:482:0, 
       from /home/mybin/include/c_std/cstdio:44, 
       from /home/mybin/include/c_compatibility/stdio.h:29, 
       from /home/myuser/test.c:3: 
/home/mybin/include/bits/os_defines.h:39:22: fatal error: features.h: No such file or directory 
compilation terminated. 

gcc -Wall -I/home/mybin/include/c_compatibility -I/home/mybin/include/c_std -I/home/mybin/include/c++/5.4.0/parallel /home/myuser/test.c -o /home/myuser/hello 
In file included from /home/mybin/include/bits/c++config.h:482:0, 
       from /home/mybin/include/c_std/cstdio:44, 
       from /home/mybin/include/c_compatibility/stdio.h:29, 
       from /home/myuser/_test.c:3: 
/home/mybin/include/bits/os_defines.h:44:19: error: missing binary operator before token "(" 
#if __GLIBC_PREREQ(2,15) && defined(_GNU_SOURCE) 
       ^
In file included from /home/mybin/include/c_compatibility/stdio.h:29:0, 
       from /home/myuser/_test.c:3: 
/home/mybin/include/c_std/cstdio:96:1: error: unknown type name 'namespace' 
namespace std 
^ 
/home/mybin/include/c_std/cstdio:97:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 
{ 
^ 
/home/mybin/include/c_std/cstdio:155:1: error: unknown type name 'namespace' 
namespace __gnu_cxx 
^ 
/home/mybin/include/c_std/cstdio:156:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 
{ 
^ 
/home/mybin/include/c_std/cstdio:181:1: error: unknown type name 'namespace' 
namespace std 
^ 
/home/mybin/include/c_std/cstdio:182:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token 
{ 
^ 
/home/myuser/_test.c:7:1: warning: return type defaults to 'int' [-Wimplicit-int] 
main() 
^ 
/home/myuser/test.c: In function 'main': 
/home/myuser/test.c:9:5: warning: implicit declaration of function 'printf' [-Wimplicit-function-declaration] 
    printf("Heh now"); 
    ^
/home/myuser/_test.c:9:5: warning: incompatible implicit declaration of built-in function 'printf' 
/home/myuser/_test.c:9:5: note: include '<stdio.h>' or provide a declaration of 'printf' 

Я пытался экспортировать LD конфигурации флаги, а

Как я знать, какую папку экспортировать, и другим машинам, сделанным из одного и того же базового изображения, чтобы я мог скомпилировать с помощью thi s. Почему включение не происходит или запутывается?

Я не я использую centos7

+0

_ «Я получаю сообщение об ошибке» _ - И какая у вас ошибка? На какой каталог вы указываете? Что такое каталоги? –

+0

a fatal stdio.h not found'error, каталоги не включены, поскольку ни один из них не был экспортирован в подкаталоги '--prefix = myfolder', как указано в ./configure. У меня есть несколько папок на машине 5.4.0, которые находятся в исходной папке src untar'd. Отсюда мой вопрос. –

+0

Какова была ваша команда configure? Как намекают другие, если они установлены в usr/local, prepend/usr/local/bin для PATH и lib или lib64 для LD_LIBRARY_PATH. Он использует вашу конфигурацию для поиска заголовков – tim18

ответ

0

Нет вам не нужно Sudo, если у вас есть каталог установки. Мы пытались выяснить, завершили ли вы этап установки ....

+0

обновленный вопрос для ясности, основанный на вашем наблюдении –