답변
uname -i
가 man uname
그것에 따른 비 휴대용 .. 정상적으로 작동 컴파일 할 수 있습니다. 나의 새로운 데비안 8도
$ uname -i
unknown
uname
GNU 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_SYSINFO
가 sys/systeminfo.h
에 있어야하고, 해당 파일이 arch
에 기본적으로 존재하지 않는 오해하지 않다합니다. 그렇다고해서 패키지가 컴파일 될 때 거기에 없었던 것은 아닙니다. 그러나 포장업자는 HAVE_SYSINFO
패키지를 적절하게 설정하여 패키지를 컴파일하는 데 신경 쓰지 않았을 가능성이 큽니다. 이식성이없는 옵션이기 때문에 받아 들일 수 있습니다.
내 댓글에 대한 gcc -v
, 내 아치가 Target: x86_64-pc-linux-gnu
에 제대로 평가를 참조하십시오. 하지만 uname
과 아무런 관련이 없으며 uname
은 시스템 정보를 시스템 호출로 보내고 gcc
에는 대상이 컴파일되어 있습니다.
참고 : uname
이 coreutils
의 일부라는 말은 100 % 정확하지 않습니다. uname
은 POSIX 표준의 일부이지만 -i
(--hardware-platform
) 옵션은 uname
에 해당하지 않습니다. -i
은 coreutils
패키지 (hell, * BSD 시스템은 -i
을 가지고 있지만 완전히 다른 의미입니다)에 의해서만 구현됩니다.
정말 고마워! ...! – OsmanthusTree
'gcc -v'가 동일한 것을 나타내는 것은 무엇입니까? 나는'gcc -v'가 어떤 작업 배포판에서도'unknown'으로 목표를 드러내지 않을 것 같았습니다. 'gcc'는 컴파일 타임에 정의 된 타겟을 가지고 있습니다. – grochmal