回答
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標準的一部分,但uname
的-i
(--hardware-platform
)選項不是該規範的一部分。 -i
僅由coreutils
包實現(地獄,* BSD系統有-i
,但它有一個完全不同的含義)。
非常感謝!...! – OsmanthusTree
- 1. 命令'xlsatoms'顯示什麼?
- 2. 爲什麼「rm」命令會覆蓋bash腳本的顯示
- 3. 執行像'get'這樣的redis命令時會發生什麼?
- 4. 爲什麼會顯示這些錯誤
- 5. 爲什麼應用程序會在sys.exit命令之後顯示?
- 6. 爲什麼 - pyenv:沒有這樣的命令 '殼' 的錯誤
- 7. 爲什麼顯示sed命令行顯示「命令後附加字符」錯誤?
- 8. 爲什麼命令「perf report」什麼都沒有顯示?
- 9. 什麼會導致像這樣變異的Flash顯示?
- 10. 爲什麼我不能運行CMD命令對於像這樣:
- 11. 爲什麼不能這樣工作?運行命令+可變
- 12. 不能使用任何Laravel命令?爲什麼是這樣?
- 13. 爲什麼CSLA這樣命名?
- 14. 爲什麼Covariance和Contravariance這樣命名?
- 15. 爲什麼HEAD提交這樣命名?
- 16. 爲什麼浮動時我的佈局顯示爲這樣?
- 17. 爲什麼會顯示compile_error?
- 18. 爲什麼我會顯示?
- 19. 爲什麼我的命令行回顯?
- 20. 爲什麼這個命令爆炸
- 21. 爲什麼在這個PowerShell命令
- 22. 什麼將顯示此命令?
- 23. (int)false;在PHP爲什麼會這樣?
- 24. 在'grep' - 爲什麼它會這樣?
- 25. 爲什麼會這樣返回NULL
- 26. 爲什麼會這樣編譯?
- 27. 這個命令做什麼?
- 28. 爲什麼Firebug的HTML面板顯示¶和?這樣的字符?
- 29. 爲什麼eclipse不會顯示像cmd這樣的註釋錯誤?
- 30. 爲什麼這個println命令不會啓動一個新行?
'gcc -v'表示什麼意思?我會發現'gcc -v'不太可能在任何工作發行版中將它的目標顯示爲'unknown'。 'gcc'在編譯時定義了它的目標。 – grochmal