2011-05-08 89 views
19

在gcc手冊中給出了「C標準庫本身 存儲在'/usr/lib/libc.a'」中。我安裝了gcc,但在上述位置找不到libc.a。很想知道它在哪裏。C標準庫的位置

我在/ usr/lib位置找到很多.so文件。那些是什麼?

+0

你試着問你的包管理器? – 2011-05-08 04:56:50

+0

libc.so怎麼樣? – Mayank 2011-05-08 04:58:17

+0

在哪個操作系統中? – 2011-05-08 04:59:44

回答

17

有幾件事情:

  • gcc和glibc的是兩個不同的東西。 gcc是編譯器,glibc是運行時庫。幾乎所有的事情都需要glibc來運行。
  • .a文件是靜態庫,.so意味着共享對象,就是Linux相當於一個DLL
  • 大多數事情不反對的libc.a鏈接的,他們對鏈接libc.so

希望掃清它適合你。至於位置,這幾乎肯定會在/usr/lib/libc.a和/或/usr/lib/libc.so。就像我說的那樣,這個更常見。

+0

是libc.so動態鏈接和libc.a靜態鏈接? – devnull 2011-05-08 05:16:56

+7

libc.so和libc.a都提供相同的功能。不同之處在於,如果您鏈​​接到libc.so,那麼無論何時升級libc.so,您的程序都可以在不進行任何更改的情況下獲得升級的好處。但是,如果您鏈​​接到libc.a,則所有功能都打包到您的程序中。 libc的新更新不會更新你的程序,所以它將不得不重新編譯。 – 2011-05-08 05:19:07

+2

所以是的,.so是動態鏈接的,.a是靜態鏈接的。 – 2011-05-08 05:19:51

2

在CentOS 5.8

$ ls -l /usr/lib/libc.a 
-rw-r--r-- 1 root root 2442786 Apr 8 2010 /usr/lib/libc.a 

$ rpm -qf /usr/lib/libc.a 
glibc-devel-2.3.4-2.43.el4_8.3 

你還必須有glibc-devel包下RedHat分發安裝。

3

如果你在Linux(rpm),那麼你將得到安裝glibc的位置 和rpm -ql glibc-devel

locate libc.a會讓你的位置。 rpm -qf /usr/lib/libc.a

這裏是rpm -qi必須告訴這些包

的glibc-devel的:和它是從哪裏來確實看到

glibc的-devel軟件包中包含目標文件需要 用於開發使用標準C庫(幾乎所有程序使用的 )的程序。如果您正在開發 將使用標準C庫的程序,則您的系統需要具有這些 標準目標文件才能創建 可執行文件。 安裝的glibc-devel的,如果你要發展,這將 使用標準C庫

程序

的glibc:

glibc的包包含在系統上使用的 多個程序標準庫。爲了節省磁盤空間和內存,並使升級更容易,常用的系統代碼是 保存在一個地方並在程序之間共享。該特定包 包含最重要的共享庫集:標準C 庫和標準數學庫。沒有這兩個庫,Linux系統將無法運行。

2

您需要爲單獨靜態庫的安裝包: 的glibc-static.i686

10

如果您正在尋找libc.a

$ gcc --print-file-name=libc.a 
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libc.a 
+0

謝謝我試圖在/ usr找到它,但沒有找到。你的命令幫了很大忙。 – 2017-01-04 06:39:46