国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

(二)掌握最基本的Linux服務(wù)器用法——Linux下簡單的C/C++ 程序、項目編譯

這篇具有很好參考價值的文章主要介紹了(二)掌握最基本的Linux服務(wù)器用法——Linux下簡單的C/C++ 程序、項目編譯。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、靜態(tài)庫與動態(tài)庫?

?

?靜態(tài)庫(Static Library):靜態(tài)庫是編譯后的庫文件,其中的代碼在編譯時被鏈接到程序中,因此它會與程序一起形成一個獨立的可執(zhí)行文件。每個使用靜態(tài)庫的程序都會有自己的庫的副本,這可能會導(dǎo)致內(nèi)存浪費。常用后綴名(.a)
優(yōu)點:
·獨立性:庫的代碼會被靜態(tài)地鏈接到程序中,使程序變得獨立并能夠單獨運行。
·版本控制:庫的代碼被嵌入在程序中,不受外部庫版本的影響。
缺點:
·內(nèi)存浪費:每個使用靜態(tài)庫的程序都會擁有庫的一個副本,可能導(dǎo)致內(nèi)存浪費。
·更新困難:更新庫需要重新編譯整個程序,部署和維護會相對復(fù)雜。

動態(tài)庫(Dynamic Library):是編譯后的庫文件,其代碼在程序運行時由操作系統(tǒng)加載到內(nèi)存中。
多個程序可以共享同一個動態(tài)庫的實例,從而減少內(nèi)存占用并提高程序的執(zhí)行效率。動態(tài)庫文件通常具有.so(Shared Object)后綴名,是一種在運行時動態(tài)加載的共享組件。
優(yōu)點:
內(nèi)存效率:多個程序可以共享同一個庫文件的實例,減少內(nèi)存使用。
更新和維護:庫的更新只需替換庫文件,不需要重新編譯整個程序。
靈活性:程序可以動態(tài)加載和卸載庫,提高程序的靈活性和可維護性。
缺點:
運行時依賴:程序在運行時需要動態(tài)庫的支持,如果缺少庫文件,程序?qū)o法運行。
部署復(fù)雜性:需要確保目標系統(tǒng)上有正確版本的動態(tài)庫。

2、軟件源碼編譯與安裝

檢查編譯工具:
在開始編譯之前,確保系統(tǒng)中已安裝了編譯所需的工具,如編譯器(例如gcc)、構(gòu)建工具(如make)和開發(fā)庫(如libc)等??梢酝ㄟ^包管理工具安裝這些工具。
配置編譯選項:
進入源代碼目錄,運行配置腳本以配置編譯選項。通常,可以使用 ./configure命令來配置,但一些軟件可能有自己的配置腳本。您可以使用不同的選項來啟用或禁用功能、指定安裝路徑等。
編譯源代碼:
運行make命令來編譯源代碼。這將生成可執(zhí)行文件和其他必要的文件。這一步很關(guān)鍵。
安裝軟件:
運行sudo make install命令以將編譯后的文件安裝到系統(tǒng)中。這將把文件復(fù)制到系統(tǒng)的標準安裝路徑,通常為/usr/local。
如果感興趣,可以從網(wǎng)上找一些簡單的安裝的安裝包試一試。

3、C與C++編譯過程

編譯過程、各種文件、

(二)掌握最基本的Linux服務(wù)器用法——Linux下簡單的C/C++ 程序、項目編譯,Linux系統(tǒng)和環(huán)境搭建簡介,linux,運維,服務(wù)器

gcc相關(guān)

使用gcc來編譯:

方法一、使用gcc單步生成
#預(yù)處理,生成中間文件(.i)
????????gcc ?-E ?source.c -o ?source.i
#編譯,生成匯編代碼(.s)
????????gcc -s source.i -o source.s
#匯編,生成目標文件(.o)
????????gcc -c source.s -o source.o
#鏈接,生成可執(zhí)行文件
????????gcc source.o -o my_program
方法二、使用gcc保留中間編譯結(jié)果
gcc ?-save-temps ?source.c ?-o ? my_program

gcc的常用編譯選項

完整的gcc用法可以通過man gcc命令進行查看

頭文件路徑選項:
????????-I:指定頭文件的搜索路徑。
多線程選項:
????????-pthread:啟用POSIX線程支持。
代碼生成選項:
????????-fPIC:生成位置無關(guān)代碼。
????????-fno-stack-protector: 禁用棧保護。
????????-fno-exceptions: 禁用C++異常處理
編譯目標架構(gòu)選項:
????????-march:指定目標架構(gòu),如-march=native。
????????-m32:編譯為32位目標。
????????-m64:編譯為64位目標。

?警告相關(guān):

—Wall: 開啟大部分警告
—Werror:將警告視為錯誤


gcc使用方法進階-靜態(tài)庫和動態(tài)庫的創(chuàng)建:

1、創(chuàng)建靜態(tài)庫的基本步驟:
????????1、編譯源文件生成目標文件(.o文件):
????????gcc -c file1.c file2.c
????????2、創(chuàng)建靜態(tài)庫:
????????ar rcs libmylib.a file1.o file2.o
2、創(chuàng)建動態(tài)庫的基本步驟:
????????1、編譯源文件生成位置無關(guān)的目標文件:
????????gcc-fPIC-c file1.c file2.c
????????2、創(chuàng)建動態(tài)庫:
????????gcc -shared -o libmylib.so file1.o file2.o
????????注意,創(chuàng)建動態(tài)庫時需要加上-PIC選項,以生成位置無關(guān)的代碼,以便在不同的內(nèi)存地址中加載。

4、make命令

make是一個自動化構(gòu)建工具,用于管理源代碼的編譯和構(gòu)建過程。它可以根據(jù)規(guī)則和依賴關(guān)系自動確定哪些文件需要重新編譯,從而使整個構(gòu)建過程更加高效和自動化。make使用一個名為Makefile的文本文件來描述編譯和構(gòu)建規(guī)則。

Makefile文件:

Makefile定義了如何編譯源代碼、如何生成目標文件以及如何生成最終的可執(zhí)行文件或庫。Makefile使用一種類似于腳本的語法,其中包含了目標、依賴關(guān)系和命令。

Makefile基礎(chǔ):
????????目標(Target):目標是Makefile中的一個名稱,表示您要構(gòu)建的文件或操作。目標可以是可執(zhí)行文件、庫文件、偽目標(用于執(zhí)行特定操作,如清理文件)等。
????????依賴關(guān)系(Dependencies): ?每個目標可以有零個或多個依賴關(guān)系,表示生成該目標所需的其他文件或目標。依賴關(guān)系告訴make哪些文件在構(gòu)建目標之前需要被更新或重新生成。
????????規(guī)則(Ruls):規(guī)則定義了如何從依賴關(guān)系生成目標文件的過程。規(guī)則包括目標、依賴關(guān)系和構(gòu)建命令。
????????命令(Commands):命令是在規(guī)則中定義的一系列操作步驟,用于從依賴關(guān)系生成目標。命令通常以Tab開頭,并列出了實際的編譯、鏈接等操作。
????????變量(Variables):變量用于存儲和傳遞值,使Makefile更具可維護性。您可以使用變量來存儲編譯器選項、源文件列表等。
????????注釋(Comments):注釋用于向Makefile添加說明,以便其他人理解構(gòu)建過程和規(guī)則。

Makefile內(nèi)容例如:

CC=gcc
CFLAGS =-Wall
myprogram: main.c ? utils.c
????????$(CC)$(CFLAGS)-o myprogram main.c
utils.c
clean:
????????rm -f myprogram?

make常用命令:

make-f: 用于指定一個不同于默認名稱的Makefile文件來執(zhí)行構(gòu)建操作。
make-j N:使用多個并行任務(wù)進行構(gòu)建,其中N是并行任務(wù)的數(shù)量。例如make-j4將使用4
個任務(wù)并行構(gòu)建。
make-C ?dir:在指定的目錄中執(zhí)行make命令。例如make-C src將在src目錄中執(zhí)行構(gòu)建。
make -B或make --always-make:強制重新構(gòu)建目標,即使目標已經(jīng)是最新的。這在需要強制重新構(gòu)建的情況下很有用。

cmake、gmake、qmake:

CMake(需要安裝)是一個跨平臺的構(gòu)建工具,用于生成用于不同編譯器和操作系統(tǒng)的構(gòu)建文件(如Makefile、Visual Studio項目等)。使用一種類似腳本的語言來描述項目的構(gòu)建過程,并生成相應(yīng)的構(gòu)建文件。CMake的一個主要優(yōu)勢是可以生成多種不同編譯系統(tǒng)所需的構(gòu)建文件。
gmake(GNU make)在不同的操作系統(tǒng)中也存在,但其Makefile文件在不同的平臺上可能需要進行修改才能適應(yīng)不同的編譯器和操作系統(tǒng)。
qmake是Qt框架附帶的構(gòu)建工具,用于生成Qt項目的構(gòu)建文件。它使用.pro文件來描述項目的配置和構(gòu)建規(guī)則。qmake可以生成Makefile或Visual Studio項目文件,以便在不同平臺上構(gòu)建Qt項目。

5、軟件編譯過程中常見錯誤

????????依賴問題:缺少所需的依賴庫或工具,導(dǎo)致編譯過程失敗。解決方法包括安裝缺失的依賴、更新版本,或者指定正確的依賴路徑。
????????編譯器錯誤:編譯器報錯或警告,可能由于語法錯誤、類型不匹配等問題。解決方法涉及修改源代碼以修復(fù)問題,確保代碼符合編譯器規(guī)范。
????????庫路徑問題:編譯器找不到所需的庫文件,可能是因為庫路徑未正確配置。解決方法包括指定正確的庫路徑、更新庫鏈接等。
????????版本不兼容:編譯代碼可能與特定版本的庫、編譯器或操作系統(tǒng)不兼容。解決方法可能涉及更新或降級軟件,以滿足兼容性要求。
????????文件缺失或損壞:源代碼或依賴文件可能缺失、損壞或下載不完整,導(dǎo)致編譯失敗。解決方法包括重新下載文件、修復(fù)文件損壞等 。

……

6、conda基本概念介紹

conda是一個開源的包管理和環(huán)境管理工具,主要用于數(shù)據(jù)科學(xué)、機器學(xué)習(xí)和科學(xué)計算等領(lǐng)域。允許用戶輕松創(chuàng)建、管理和分享不同的虛擬環(huán)境,以及安裝和管理不同版本的軟件包和庫。
conda最初是Anaconda發(fā)行版中的一部分,后來作為一個獨立的工具被廣泛使用。


1.包版本管理:conda允許用戶安裝特定版本的軟件包,并可以在不同版本之間切換。這對于確保項目在不同環(huán)境和平臺上的一致性非常有用。
2.環(huán)境管理:conda支持創(chuàng)建和管理獨立的虛擬環(huán)境。每個環(huán)境都可以有自己的依賴、配置和Python版本。這使得在同一臺機器上同時管理多個項目變得更加容易。
3.虛擬環(huán)境集成:conda可以創(chuàng)建和管理虛擬環(huán)境,但也可以與其他虛擬環(huán)境工具(如virtualenv)集成,以提供更大的靈活性。

conda的基本命令:
創(chuàng)建虛擬環(huán)境:conda ?create ?--name ?myenv
激活虛擬環(huán)境或進入虛擬環(huán)境:conda activate ?myenv

在虛擬環(huán)境中安裝軟件包:conda install numpy
列出已安裝的軟件包:conda list
卸載軟件包:conda remove numpy
退出虛擬環(huán)境:conda deactivate

刪除虛擬環(huán)境:先執(zhí)行退出虛擬環(huán)境的命令,再執(zhí)行conda env remove --name 虛擬環(huán)境名。
創(chuàng)建環(huán)境配置文件:conda env export > environment.yml
從配置文件創(chuàng)建環(huán)境:conda env create -f environment.yml

我創(chuàng)建的虛擬環(huán)境的路徑:/home/服務(wù)器名稱/anaconda3/envs/環(huán)境名稱
可以通過conda-help或conda<subcommand>-help查看更詳細的幫助信息?

與此相似的,virtualenv是一個非常有用的工具,特別適用于多項目開發(fā)環(huán)境中,它通過隔離環(huán)境、管理依賴和提供獨立的Python版本等功能,使得Python項目開發(fā)更加靈活、可靠和可維護。文章來源地址http://www.zghlxwxcb.cn/news/detail-655566.html

到了這里,關(guān)于(二)掌握最基本的Linux服務(wù)器用法——Linux下簡單的C/C++ 程序、項目編譯的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 在Linux服務(wù)器上簡單部署一個Python項目

    在Linux服務(wù)器上簡單部署一個Python項目

    一、在對應(yīng)的服務(wù)器上檢查有無Python環(huán)境 二、在服務(wù)器上創(chuàng)建對應(yīng)項目的文件 三、收集項目的依賴包 四、將項目拷貝到服務(wù)器 五、創(chuàng)建Python運行的虛擬環(huán)境,并啟動 六、安裝對應(yīng)項目的依賴包 七、運行主程序文件 以上就是在Linux上簡單部署一個python項目的方法。

    2024年02月12日
    瀏覽(28)
  • 簡單的UDP網(wǎng)絡(luò)程序·續(xù)寫(后端服務(wù)器)

    簡單的UDP網(wǎng)絡(luò)程序·續(xù)寫(后端服務(wù)器)

    該文承接文章?簡單的UDP網(wǎng)絡(luò)程序 對于客戶端和服務(wù)端的基本源碼參考上文,該文對服務(wù)器潤色一下,并且實現(xiàn)幾個基本的業(yè)務(wù)服務(wù)邏輯 目錄 demo1 第一個功能:字典翻譯 初始化字典 測試代碼:打印 字符串分割 客戶端修改 成品效果 字典熱加載 signal demo2 遠端命令行解析 p

    2024年02月09日
    瀏覽(22)
  • Linux下Samba服務(wù)器的安裝與配置(簡單實用)

    Linux下Samba服務(wù)器的安裝與配置(簡單實用)

    為了可以實現(xiàn)Linux與windows之間實現(xiàn)文件的共享,方便文件可以直接修改,而不是像以前需要拷貝文件再進行修改,samba的誕生是為了實現(xiàn)現(xiàn)在的這些需求。我們知道Linux之間可以使用NFS服務(wù)器來實現(xiàn)文件的共享,samba的誕生就是為了使windows能夠訪問Linux的資源。 下面是samba服務(wù)

    2024年02月12日
    瀏覽(25)
  • Linux下服務(wù)器基本環(huán)境搭建步驟詳解(三種軟件安裝方式)

    Linux下服務(wù)器基本環(huán)境搭建步驟詳解(三種軟件安裝方式)

    小伙伴們注意看:下面使用三種方式分別安裝JDK、Tomcat、Docker進行演示 操作系統(tǒng)基于CentOs7. Linux服務(wù)器的學(xué)習(xí)小結(jié),希望能給到小伙伴們一點幫助。同時也方便我自己回顧。覺得可以記得好評點贊,阿里嘎多! 1、rpm下載地址 方式一 :rpm 下載地址 方式二 :https://www.aliyundr

    2024年02月11日
    瀏覽(25)
  • 簡單的TCP網(wǎng)絡(luò)程序·單進程(后端服務(wù)器)

    簡單的TCP網(wǎng)絡(luò)程序·單進程(后端服務(wù)器)

    目錄 文件1:tcpServer.cc 文件2:tcpServer.hpp 1.提出日志概念 -- 在后續(xù)完善 日志格式 --?暫定簡單的打印功能 2.創(chuàng)建套接字 SOCK_STREAM -- socket參數(shù) 3.bind自己的套接字 4.設(shè)置socket 為監(jiān)聽狀態(tài) * 新接口1:listen 函數(shù)1:initServer() 新接口2:accept * 接口1:read 接口2:write 文件描述符本質(zhì)是

    2024年02月11日
    瀏覽(25)
  • 簡單的TCP網(wǎng)絡(luò)程序·線程池(后端服務(wù)器)

    簡單的TCP網(wǎng)絡(luò)程序·線程池(后端服務(wù)器)

    目錄 版本四:線程池 注意事項 文件:Task.hpp -- 任務(wù)單獨為一個文件 組件:日志修改 新函數(shù):vprintf() 可變參數(shù)的提取邏輯 vfprintf()的工作原理 初始化一個va_list 日志準備 獲取時間小知識 日志初版 日志啟動測試 TCP通用服務(wù)器(守護進程)?* 新指令1:jobs -- 查看進程作業(yè) 新指令

    2024年02月09日
    瀏覽(25)
  • Linux 基于 TCP 協(xié)議的簡單服務(wù)器-客戶端應(yīng)用

    Linux 基于 TCP 協(xié)議的簡單服務(wù)器-客戶端應(yīng)用

    目錄 一、相關(guān)函數(shù)? 1、listen() 2、accept() 3、connect()? 4、兩種IP地址轉(zhuǎn)換方式? 5、TCP和UDP數(shù)據(jù)發(fā)送和接收函數(shù)對比 5、log.hpp自定義記錄日志 二、udp_server.hpp單進程版本 三、tcp_server.cc 四、Telnet客戶端(代替tcp_client.cc) 五、多進程實現(xiàn)udp_server.hpp 1、多進程版本一 2、tcp_client.

    2024年04月27日
    瀏覽(29)
  • Linux上搭建Socks5服務(wù)器最簡單的方法

    說起socks5,這種服務(wù)是有點年頭了。 以前最知名的socks5服務(wù)端就屬ss5,但這老掉牙的玩意著實不太行??催@個文檔: linux搭建socks5代理_linux ss5_Venele的博客-CSDN博客 又要裝一大堆工具,還很難配置。 以前我裝過這個玩意,想成功訪問還要配置半天。結(jié)果為了方便配的空密碼,

    2024年02月06日
    瀏覽(19)
  • MobaXterm的下載及簡單使用(建立 SSH 連接到 Linux 服務(wù)器)

    MobaXterm的下載及簡單使用(建立 SSH 連接到 Linux 服務(wù)器)

    目錄 一、MobaXterm 的下載 二、MobaXterm 的簡單使用(建立 SSH 連接到 Linux 服務(wù)器) 三、會遇到的問題 問題1 問題2 官方下載地址:MobaXterm Xserver with SSH, telnet, RDP, VNC and X11 - Download 1.進入首頁后,有家庭版(Home Edition)和專用版(Professional Edition)兩個版本,我們選擇為免費的家

    2024年02月09日
    瀏覽(29)
  • 本地搭建微信小程序或者公眾號開發(fā)服務(wù)器的簡單方法

    本地搭建微信小程序或者公眾號開發(fā)服務(wù)器的簡單方法

    現(xiàn)在小程序開發(fā)需要購買服務(wù)器,價格還是有點貴的,這里好代碼網(wǎng)分享一個可以花費小代價就可以搭建一個本地服務(wù)器,可以用來開發(fā)小程序和微信公眾號等。 1.域名(備案過的) 2.阿里云注冊免費的https證書 3.配置本地的nginx 4.內(nèi)網(wǎng)映射(本地安裝wampserver 服務(wù)器) 一、域

    2024年02月02日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包