導航:首頁 > 編程系統 > c命名規范linux

c命名規范linux

發布時間:2023-03-14 18:54:43

linux系統中,用戶自定義變數的定義和使用方法與c語言有何異同

變數定義和使用基本相同。都是按照C語言標準的。命名規范可能有點差別,linux系統中,通常用小寫的字母、單詞, Windows中C語言通常首字母大寫。

② Linux下C/C++動態庫在運行時是怎樣載入進來的

在linux上,你在ps中說的那種"將動態庫作為一個參數傳到程序里"的使用方式,是通過dlopen函數將.so載入到當前進程中,並且通過ld.so將.so"鏈接"進當前進程。這個"鏈接"過程包括:查找未定義符號在當前進程中的地址、分配數據/代碼/bss段內存(數據初始化全局變數、代碼段重定位)、執行constructor函數等。之後,可以使用dlsym在已知符號名的情況下通過符號名查找符號對應的地址。這個符號可以是一個全局變數、全局函數等。在你說的C++中,重載的函數也可以理解為全局函數,會有一個屬性為weak的符號。該符號的符號名如果不做修改,默認按照System V的C++ API命名規范命名(以保證linux下不同編譯器編譯出來的.so和.o可以通用)。但如果使用extern "C"修飾之後,變成C的函數名,則無名稱修飾,便於使用。

作者:yin jie
鏈接:https://www.hu.com/question/29988788/answer/46352593
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

③ Linux中如何創建靜態庫和動態庫

靜態庫在程序編譯時會被連接到目標代碼中,程序運行時將不再需要該靜態庫。 動態庫在程序編譯時並不會被連接到目標代碼中,而是在程序運行是才被載入,因此在程序運行時還需要動態庫存在。 程序1: hello.h #ifndef HELLO_H #define HELLO_H void hello(const char *name); #endif //HELLO_H 程序2: hello.c #include void hello(const char *name) { printf("Hello %s!\n", name); } 程序3: main.c #include "hello.h" int main() { hello("everyone"); return 0; } 無論動態庫還是靜態庫都需要用到.o文件來生成,先編譯生成.o文件。 # gcc -c hello.c 1:創建靜態庫 靜態庫文件名的命名規范是以lib為前綴,緊接著跟靜態庫名,擴展名為.a。例如:我們將創建的靜態庫名為myhello,則靜態庫文件名就是libmyhello.a。 # ar cr libmyhello.a hello.o 使用靜態庫:只需要在你的源程序中加入包含你所需要使用到的函數的聲明(即包含頭文件),然後在gcc生成目標文件時候指明靜態庫就OK了(除非你包含的頭文件在/usr/include,庫文件在標准庫/usr/lib,/lib下,否則你得顯示指明他們的路徑) # gcc -o hello main.c -L. -lmyhello # ./hello Hello everyone! 刪除靜態庫文件運行./hello,程序正常運行,說明靜態庫公用函數已經鏈接到目標文件。 2: 利用.o文件創建動態庫 動態庫文件擴展名為.so。 # gcc -shared -fPCI -o libmyhello.so hello.o 動態庫的使用與靜態庫使用方式一樣 # gcc -o hello main.c -L. -lmyhello # ./hello ./hello: error while loading shared libraries: libmyhello.so: cannot open shared object file: No such file or directory 哦!出錯了。快看看錯誤提示,原來是找不到動態庫文件libmyhello.so。程序在運行時,會在/usr/lib和/lib等目錄中查找需要的動態庫文件。若找到,則載入動態庫,否則將提示類似上述錯誤而終止程序運行。

④ linux系統中設備文件命名的規則是什麼

在基於Linux的系統中,設備節點一般在/dev下,通常使用如下的前綴:

大部分設備的前綴名後面跟隨一個數字,它唯一指定某一設備。硬碟驅動器的前綴名後面跟隨一個字母和一個數字,字母用於指明設備,而數字用於指明分區。因此,/dev/sda3指定了硬碟上的一個分區,/dev/pts/14指定了一個網路終端會話。

一些Linux發行版用SCSI層訪問所有固定硬碟,因此雖然一塊硬碟可能並不是SCSI硬碟,但仍可以通過sd設備訪問它。

⑤ C語言命名規范

匈牙利命名法是微軟推廣的一種關於變數、函數、對象、前綴、宏定義等各種類型的符號的命名規范。匈牙利命名法的主要思想是:在變數和函數名中加入前綴以增進人們對程序的理解。它是由微軟內部的一個匈牙利人發起使用的,結果它在微軟內部逐漸流行起來,並且推廣給了全世界的Windows開發人員。下面將介紹匈牙利命名法,後面的例子里也會盡量遵守它和上面的代碼風格。還是那句話,並不是要求所有的讀者都要去遵守,但是希望讀者作為一個現代的軟體開發人員都去遵守它。

a Array 數組

b BOOL (int) 布爾(整數)

by Unsigned Char (Byte) 無符號字元(位元組)

c Char 字元(位元組)

cb Count of bytes 位元組數

cr Color reference value 顏色(參考)值

cx Count of x (Short) x的集合(短整數)

dw DWORD(unsigned long) 雙字(無符號長整數)

f Flags (usually multiple bit values) 標志(一般是有多位的數值)

fn Function 函數

g_ global 全局的

h Handle 句柄

i Integer 整數

l Long 長整數

lp Long pointer 長指針

m_ Data member of a class 一個類的數據成員

n Short int 短整數

p Pointer 指針

s String 字元串

sz Zero terminated String 以0結尾的字元串

tm Text metric 文本規則

u Unsigned int 無符號整數

ul Unsigned long (ULONG) 無符號長整數

w WORD (unsigned short) 無符號短整數

x,y x, y coordinates (short) 坐標值/短整數

v void 空

有關項目的全局變數用g_開始,類成員變數用m_,局部變數若函數較大則可考慮用l_用以顯示說明其是局部變數。

前綴 類型 例子

g_ 全局變數 g_Servers

C 類或者結構體 CDocument,CPrintInfo

m_ 成員變數 m_pDoc,m_nCustomers

VC常用前綴列表:

前綴 類型 描述 例子

ch char 8位字元 chGrade

ch TCHAR 16位UNICODE類型字元 chName

b BOOL 布爾變數 bEnabled

n int 整型(其大小由操作系統決定) nLength

n UINT 無符號整型(其大小由操作系統決定) nLength

w WORD 16位無符號整型 wPos

l LONG 32位有符號整型 lOffset

dw DWORD 32位無符號整型 dwRange

p * Ambient memory model pointer 內存模塊指針,指針變數 pDoc

lp FAR* 長指針 lpDoc

lpsz LPSTR 32位字元串指針 lpszName

lpsz LPCSTR 2位常量字元串指針 lpszName

lpsz LPCTSTR 32位UNICODE類型常量指針 lpszName

h handle Windows對象句柄 hWnd

lpfn (*fn)() 回調函數指針 Callback Far pointer to CALLBACK function lpfnAbort

⑥ linux文件名的命名遵行什麼規則

cp命令用於復制文件或目錄,格式為:「cp [選項] 源文件 目標文件」。
復制命令的三種情況:
目標文件是一個目錄,會將源文件復制到該目錄中。
目標文件是一個文件,會將源文件覆蓋該文件。
目標文件不存在,將會復制源文件並修改為目標文件的名稱(重命名)。
參數 作用
-p 保留原始文件的屬性
-d 若對象為"鏈接文件",則保留該"鏈接文件"的屬性
-r 遞歸持續復制(用於目錄)
-i 若目標文件存在則詢問是否覆蓋
-a 相當於-pdr(p,d,r為上述的參數)

創建一個名為install.log的文件:
[root@linuxprobe ~]# touch install.log

將install.log復制為x.log:
[root@linuxprobe ~]# cp install.log x.log

查看到確實出現了文件x.log
[root@linuxprobe ~]# ls
install.log x.log

mv命令用於移動文件或改名,格式為:「mv [選項] 文件名 [目標路徑|目標文件名]」。
將文件aaa重命名為bbb:
[root@linuxprobe ~]# mv aaa bbb

網路搜索《linux就該這么學》,
第2章 新手必須掌握的Linux命令,有最基本的命令,可以看下。

⑦ linux內核版本變少

Linux內核版本命名在不同時期有著不同的規范,在涉及到Linux版本問題時經常容易混淆,主線版本/穩定版/長期支持版本經常搞不清楚,本文主要記錄下內核版本命名的規則以及如何查看Linux系統版本信息。

Linux內核(Linux kernel)簡介
內核是操作系統的核心 ,其主要功能有:

響應中斷,執行中斷服務程序
管理多個進程,調度和分享處理器的時間
管理進程地址空間的內存管理
網路和進程間通信等系統服務程序
內核的活動范圍:

1.運行於用戶空間,執行用戶進程
2.運行於內核空間,處於進程上下文,代表某個特定進程的執行
3.運行於內核空間,處於中斷上下文,與任何進程無關,處理某個特定的中斷
Linux內核版本號
第一種方式:

Linux 的版本號分為兩部分,即內核版本與發行版本。內核版本號由3個數字組成:A.B.C。各數字含義如下:

A:內核主版本號。這是很少發生變化,只有當發生重大變化的代碼和內核發生才會發生。在歷史上曾改變兩次的內核:1994年的1.0及1996年的2.0。
B:內核次版本號。是指一些重大修改的內核。偶數表示穩定版本;奇數表示開發中版本。
C:內核修訂版本號。是指輕微修訂的內核。這個數字當有安全補丁,bug修復,新的功能或驅動程序,內核便會有變化。
第二種方式:

major.minor.patch-build.desc

major : 主版本號,有結構變化才變更
minor : 次版本號,新增功能時才發生變化,一般技術表示測試版,偶數表示生產版
patch : 補丁包數或次版本的修改次數
build : 編譯(或構建)的次數,每次編譯可能對少量程序做優化或修改,但一般沒有大的(可控的)功能變化。
desc : 當前版本的特殊信息,其信息由編譯時指定,具有較大的隨意性,有如下的標識是常用的:
rc(或r),表示發行候選版本(release candidate),rc後的數字表示該正式版本的第幾個候選版本,多數情況下,各候選版本之間數字越大越接近正式版。
smp,表示對稱多處理器(Symmetric MultiProcessing)。
pp,在Red Hat Linux中常用來表示測試版本(pre-patch)。
EL,在Red Hat Linux中用來表示企業版Linux(Enterprise Linux)。
mm,表示專門用來測試新的技術或新功能的版本。
fc,在Red Hat Linux中表示Fedora Core。
例如:
用命令uname -a查看內核版本號

1、在CentOS下如:

Linux localhost 2.6.32-642.15.1.el6.x86_64 #1 SMP Fri Feb 24 14:31:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
說明如下:

第一個組數字:2, 主版本號
第二個組數字:6, 次版本號,當前為穩定版本
第三個組數字:32, 修訂版本號
第四個組數字:642.15.1,表示發型版本的補丁版本
el6:則表示我正在使用的內核是 RedHat / CentOS 系列發行版專用內核
x86_64:採用的是64位的CPU
2、在Ubuntu下如:

Linux localhost 3.2.0-67-generic #101-Ubuntu SMP Tue Jul 15 17:46:11 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
#有的是3.2.0-67-generic-pae
說明如下:

第一個組數字:3,主版本號
第二個組數字:2,次版本號,當前為穩定版本
第三個組數字:0,修訂版本號
第四個組數字:67,當前內核版本(3.2.0)的第67次微調patch
generic:當前內核版本為通用版本,另有表示不同含義的server(針對伺服器)、i386(針對老式英特爾處理器)
pae(PhysicalAddressExtension):物理地址擴展,為了彌補32位地址在PC伺服器應用上的不足而推出,表示此32位系統可以支持超過4G的內存
x86_64:採用的是64位的CPU
SMP:對稱多處理機,表示內核支持多核、多處理器
TueJul1517:46:11UTC2014:內核的編譯時間(builddate)為2014/07/1517:46:11
有好東西,一定想著大家。我是愛分享的Linux技術狂。大家記得關注我,也不要忘記點贊、評論、收藏。

同時也可以點擊 正在跳轉 我們在這里一起學習、一起進步,或者點擊 C/C++Linux伺服器開發/後台架構師 免費訂閱一下,多一點知識,多一份收獲,更多一點工資。

更多關於內核的視頻干貨:

嗶哩嗶哩 ( ゜- ゜)つロ 乾杯~ Bilibili
內核版本分類
Linux內核版本的最新發布狀態,參見Linux官網:

The Linux Kernel Archives
1、mainline
主線版本

2、stable
穩定版,由mainline在時機成熟時發布,穩定版也會在相應版本號的主線上提供bug修復和安全補丁,但內核社區人力有限,因此較老版本會停止維護,而標記為EOL(End of Life)的版本表示不再支持的版本。

3、longterm(Long Term Support)
長期支持版,長期支持版的內核不再支持時會標記EOL。

4、linux-next,snapshot
代碼提交周期結束之前生成的快照 用於給Linux代碼貢獻者們做測試

查看Linux內核版本命令
1、cat /proc/version

[root@bogon ~]# cat /proc/version
Linux version 4.4.131-1.el7.elrepo.x86_64 (mockbuild@Build64R7) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) #1 SMP Wed May 2 13:09:02 EDT 2018
2、uname -a

[root@bogon ~]# uname -a
Linux bogon 4.4.131-1.el7.elrepo.x86_64 #1 SMP Wed May 2 13:09:02 EDT 2018 x86_64 x86_64 x86_64 GNU/Linux

[root@bogon ~]# uname -r
4.4.131-1.el7.elrepo.x86_64
查看Linux系統版本的命令
1、lsb_release -a(適用於所有的Linux發行版本)

LSB是Linux Standard Base的縮寫,lsb_release命令用來顯示LSB和特定版本的相關信息。如果使用該命令時不帶參數,則默認加上-v參數。
說明:

-v 顯示版本信息。
-i 顯示發行版的id。
-d 顯示該發行版的描述信息。
-r 顯示當前系統是發行版的具體版本號。
-c 發行版代號。
-a 顯示上面的所有信息。
-h 顯示幫助信息。
-s 輸出簡短的描述信息(僅限於redhat和fedora系統) 。
有些系統中默認並沒有安裝lsb_release,需要進行安裝,以CentOS為例:

首先查找lsb_release安裝包:

[root@bogon ~]# yum provides lsb_release
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* elrepo: mirrors.tuna.tsinghua.e.cn
* extras: centos.ustc.e.cn
* updates: mirrors.cn99.com
redhat-lsb-core-4.1-27.el7.centos.1.x86_64 : LSB Core mole support
Repo : base
Matched from:
Filename : /usr/bin/lsb_release
安裝:

[root@bogon ~]# yum install -y redhat-lsb-core
2、cat /etc/redhat-release(適用於Redhat系的Linux)

[root@bogon ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
3、cat /etc/issue(適用於所有的Linux發行版本)

root@localhost:~# cat /etc/issue
Ubuntu 14.04.5 LTS \n \l
本文作者: Jason hu
本文轉自鏈接: http://jasonhzy.github.io/2019/02/05/linux-kernel-version/
版權聲明:本文採用 CC BY-NC-SA 3.0 許可協議。
展開閱讀全文

閱讀全文

與c命名規范linux相關的資料

熱點內容
maya粒子表達式教程 瀏覽:84
抖音小視頻如何掛app 瀏覽:283
cad怎麼設置替補文件 瀏覽:790
win10啟動文件是空的 瀏覽:397
jk網站有哪些 瀏覽:134
學編程和3d哪個更好 瀏覽:932
win10移動硬碟文件無法打開 瀏覽:385
文件名是亂碼還刪不掉 瀏覽:643
蘋果鍵盤怎麼打開任務管理器 瀏覽:437
手機桌面文件名字大全 瀏覽:334
tplink默認無線密碼是多少 瀏覽:33
ipaddgm文件 瀏覽:99
lua語言編程用哪個平台 瀏覽:272
政采雲如何導出pdf投標文件 瀏覽:529
php獲取postjson數據 瀏覽:551
javatimetask 瀏覽:16
編程的話要什麼證件 瀏覽:94
錢脈通微信多開 瀏覽:878
中學生學編程哪個培訓機構好 瀏覽:852
榮耀路由TV設置文件共享錯誤 瀏覽:525

友情鏈接