2016-05-31 9 views
1
I 입력 gcc -v, 그냥 동일한 도시

...archlinux의 uname 명령이 왜 이렇게 표시됩니까?

I 데비안을 시도하도록 그리고

I only meet this problem in arch and how can i fix it??

+0

'gcc -v'가 동일한 것을 나타내는 것은 무엇입니까? 나는'gcc -v'가 어떤 작업 배포판에서도'unknown'으로 목표를 드러내지 않을 것 같았습니다. 'gcc'는 컴파일 타임에 정의 된 타겟을 가지고 있습니다. – grochmal

답변

1

uname -iman uname 그것에 따른 비 휴대용 .. 정상적으로 작동 컴파일 할 수 있습니다. 나의 새로운 데비안 8도

$ uname -i 
unknown 

unameGNU coreutils의 일부로 출력하고 그것은 매우 간단한 프로그램입니다. code on savannah을 볼 수 있습니다. 당신이 거기 명령 줄 옵션을 통해 보면 --hardware-platform-i입니다 : 차례로 기본적으로 "알"의 인쇄를 수행, PRINT_HARDWARE_PLATFORM

198  while ((c = getopt_long (argc, argv, "asnrvmpio", 
199        uname_long_options, NULL)) != -1) 
200   { 
201   switch (c) 
202    { 
... 
227    case 'p': 
228    toprint |= PRINT_PROCESSOR; 
229    break; 
230 
231    case 'i': 
232    toprint |= PRINT_HARDWARE_PLATFORM; 
233    break; 

정의의 인쇄를 강제

88 static struct option const uname_long_options[] = 
    89 { 
    90 {"all", no_argument, NULL, 'a'}, 
    ... 
    97 {"machine", no_argument, NULL, 'm'}, 
    98 {"processor", no_argument, NULL, 'p'}, 
    99 {"hardware-platform", no_argument, NULL, 'i'}, 
100 {"operating-system", no_argument, NULL, 'o'}, 
101 {GETOPT_HELP_OPTION_DECL}, 
102 {GETOPT_VERSION_OPTION_DECL}, 
103 {NULL, 0, NULL, 0} 
104 }; 

.

344 if (toprint & PRINT_HARDWARE_PLATFORM) 
345  { 
346  char const *element = unknown; 
347 #if HAVE_SYSINFO && defined SI_PLATFORM 
348  { 
349   static char hardware_platform[257]; 
350   if (0 <= sysinfo (SI_PLATFORM, 
351       hardware_platform, sizeof hardware_platform)) 
352   element = hardware_platform; 
353  } 
354 #endif 

내가 (내가 수 있습니다) HAVE_SYSINFOsys/systeminfo.h에 있어야하고, 해당 파일이 arch에 기본적으로 존재하지 않는 오해하지 않다합니다. 그렇다고해서 패키지가 컴파일 될 때 거기에 없었던 것은 아닙니다. 그러나 포장업자는 HAVE_SYSINFO 패키지를 적절하게 설정하여 패키지를 컴파일하는 데 신경 쓰지 않았을 가능성이 큽니다. 이식성이없는 옵션이기 때문에 받아 들일 수 있습니다.


내 댓글에 대한 gcc -v, 내 아치가 Target: x86_64-pc-linux-gnu에 제대로 평가를 참조하십시오. 하지만 uname과 아무런 관련이 없으며 uname은 시스템 정보를 시스템 호출로 보내고 gcc에는 대상이 컴파일되어 있습니다.


참고 : unamecoreutils의 일부라는 말은 100 % 정확하지 않습니다. uname은 POSIX 표준의 일부이지만 -i (--hardware-platform) 옵션은 uname에 해당하지 않습니다. -icoreutils 패키지 (hell, * BSD 시스템은 -i을 가지고 있지만 완전히 다른 의미입니다)에 의해서만 구현됩니다.

+0

정말 고마워! ...! – OsmanthusTree