日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux源代码软件安装,Linux软件安装:源代码与软件安装

發(fā)布時間:2025/3/20 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux源代码软件安装,Linux软件安装:源代码与软件安装 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

歡迎進入Linux社區(qū)論壇,與200萬技術(shù)人員互動交流 >>進入 Linux軟件安裝:源代碼與軟件安裝 1 開源軟件的一些基本概念 1.1 什么是開放源碼,編譯程序與可執(zhí)行文件 可執(zhí)行文件 Linux上真正可以執(zhí)行的文件是二進制文件,例如/usr/bin/passwd,/bin/touch shell

歡迎進入Linux社區(qū)論壇,與200萬技術(shù)人員互動交流 >>進入

Linux軟件安裝:源代碼與軟件安裝

1 開源軟件的一些基本概念

1.1 什么是開放源碼,編譯程序與可執(zhí)行文件

可執(zhí)行文件

Linux上真正可以執(zhí)行的文件是二進制文件,例如/usr/bin/passwd,/bin/touch

shell script只是調(diào)用這些二進制文件,完成某種功能

可以用file命令檢驗文件類型

$ file /bin/bash

/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),

dynamically linked (uses shared libs),

for GNU/Linux 2.6.24, BuildID[sha1]=0xf199a4a89ac968c2e0e99f2410600b9d7e995187, stripped

$ file /etc/init.d/rc

/etc/init.d/rc: POSIX shell script, ASCII text executable

編譯程序

這些可以執(zhí)行的二進制文件是哪兒來的呢?首先,必須要寫程序的源代碼,然后,由編譯程序?qū)⒊绦虻脑创a 編譯成二進制形式。源代碼是由程序員編寫的,使用特定的程序語言,如C,C++,Java,Python.但是機器看不懂 這些語言,所以要使用編譯程序?qū)⑦@些語言編寫的源代碼編譯成機器可以看懂的二進制文件。如C語言常用的編譯器 為gcc.

1.2 什么是函數(shù)庫

函數(shù)庫由一系列函數(shù)組成,每一個函數(shù)都是一個代碼片段,完成特定的功能,這樣我們使用一些常用功能時,就不必 自己重新編寫代碼,只需要調(diào)用函數(shù)庫里的函數(shù)就可以了。函數(shù)庫分為靜態(tài)函數(shù)庫和動態(tài)函數(shù)庫。

靜態(tài)函數(shù)庫

擴展名:.a

編譯時會直接編譯到二進制文件中,所以生成的文件通常比較大,升級時需要重新編譯

動態(tài)函數(shù)庫

擴展名:.so

編譯時不會直接編譯到二進制文件中,只是給出一個路徑,指向相應(yīng)函數(shù)庫,程序執(zhí)行調(diào)用時動態(tài)地向此路徑讀取, 升級時,只需要替換原路徑中的動態(tài)函數(shù)庫就可以了,不需要重新編譯

使用ldd命令可以知道程序使用了哪些動態(tài)函數(shù)庫

$ ldd /usr/bin/passwd

linux-gate.so.1 =>? (0xb7784000)

libpam.so.0 => /lib/i386-linux-gnu/libpam.so.0 (0xb775c000)

libpam_misc.so.0 => /lib/i386-linux-gnu/libpam_misc.so.0 (0xb7758000)

libselinux.so.1 => /lib/i386-linux-gnu/libselinux.so.1 (0xb7738000)

libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb758e000)

libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb7589000)

/lib/ld-linux.so.2 (0xb7785000)

1.3 什么是 make 與 configure

當(dāng)程序的文件數(shù)目非常大時,直接使用gcc編譯會變得非常麻煩,這時,我們可以寫一個文件,定義好如何編譯整個程序, 這個文件即是makefile,然后再調(diào)用make命令,make命令會使用makefile完成編譯。那么makefile如何產(chǎn)生呢,通常軟件 提供者都會提供一個configure程序,用于檢測機器環(huán)境,生成makefile.檢測的內(nèi)容包括是否有合適的編譯器,是否存在 需要的函數(shù)庫,操作系統(tǒng)版本是否合適等等。

2 C語言編譯簡單范例

使用vim編寫兩個程序源代碼

#include

int main(void) {

thankYou();

printf ("hello,world\n");

return 0;

}

#include

void thankYou()

{

printf ("Thank you\n");

}

使用gcc編譯 這一步,源代碼文件被編譯成為目標(biāo)文件

$ gcc -c hello.c -o hello.o

$ gcc -c thank.c -o thank.o

使用gcc鏈接 通過鏈接,我們可以將函數(shù)庫中已經(jīng)編譯好的目標(biāo)文件與我們自己編寫生成的目標(biāo)文件鏈接在一起,成為 一個最終的二進制文件

$ gcc hello.o thank.o -o hi

執(zhí)行

$ ./hi

Thank you

hello,world

注意

可以使用 -l指定函數(shù)庫,-L指定函數(shù)庫路徑,-I指定頭文件路徑

gcc sin.c -lm -L/lib -L/usr/lib -I/usr/include

上面的-l指加入函數(shù)庫,m指的是libm.so這個函數(shù)庫

[1]?[2]

總結(jié)

以上是生活随笔為你收集整理的Linux源代码软件安装,Linux软件安装:源代码与软件安装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。