2016-05-31 5 views
1

Когда я вход gcc -v, он просто показывает то же самое ...Почему команда uname команды archlinux выглядит так?

меня попробовать в Debian и он ведет себя нормально ..

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

+0

Что значит «gcc -v» показывает то же самое? Мне было бы очень маловероятно, что 'gcc -v' показывает свою цель как' unknown' в любом рабочем дистрибутиве. 'gcc' имеет свою цель, определенную во время компиляции. – grochmal

ответ

1

uname -i является непереносимой согласно man uname и этим могут быть скомпилированы. Мой новый Debian 8 также печатает как

$ uname -i 
unknown 

uname является частью GNU coreutils и это очень простая программа. вы можете увидеть code on savannah. Если посмотреть с помощью опции командной строки там --hardware-platform является -i:

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 }; 

Что заставляет печать из определения 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; 

Который, в свою очередь, делает печать «неизвестный» по умолчанию.

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 (черт, * BSD-системы имеют -i, но он имеет совершенно иное значение).

+0

Спасибо большое! ...! – OsmanthusTree

 Смежные вопросы

  • Нет связанных вопросов^_^