簡體   English   中英

如何在Linux中安裝標准庫的標頭?

[英]How the headers of the standard library are installed in Linux?

我對siginfo.h庫有一個惱人的問題。 我需要一個包含siginfo_t結構的庫的版本,其中包含一個用於處理SIGSYS信號的字段。

對於isntance,可以在這里找到我需要的結構版本: http ://code.woboq.org/userspace/glibc/sysdeps/unix/sysv/linux/x86/bits/siginfo.h.html

使用#include自動包含的版本是/usr/include/bits/siginfo.h中缺少此字段的版本。 但是,asm-generic中存在另一個版本的同一個庫,它提供了我需要的字段。 內核包含兩個名為siginfo.h的文件,但它們不包含siginfo_t結構。 我認為這個問題可以通過更新glibc來解決,但在最新版本的glibc(2.17)中,有一個完全不同的版本,而不是我需要的。

現在我有點困惑,標准庫的標題實際上是如何安裝的? 我應該激活編譯選項以獲得此結構嗎?

union {} _sifields的成員union {} _sifieldssiginfo_t取決於您使用的是哪個內核。

內核3.6.4明確定義:

 /* SIGSYS */
 struct {
   void __user *_call_addr; /* calling user insn */
   int _syscall;   /* triggering system call number */
   unsigned int _arch;     /* AUDIT_ARCH_* of syscall */
 } _sigsys;

內核2.6.32沒有。

我不知道它何時被引入。

頭文件在gcc中按以下順序搜索:1)-I選項標識的路徑; 2)env變量中的路徑,C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH; 3)系統路徑,如“/ usr / include”等。因此,您可以使用“-I”選項來更改頭文件搜索路徑。 而且,您可能需要使用“-L”選項來更改庫路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM