導航:首頁 > 文件目錄 > ubuntulinux頭文件路徑

ubuntulinux頭文件路徑

發布時間:2023-11-15 00:15:10

1. 關於VSCode的C/C++編譯問題,主要關於頭文件與庫的引用

你查一下有哪些包含.h文件的include文件夾 全部加到配置裡面就是了. 我的配置win10 + cygwin . 我只配置了win32節點

js">{
"configurations":[
{
"name":"Mac",
"includePath":[
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"defines":[],
"intelliSenseMode":"clang-x64",
"browse":{
"path":[
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders":true,
"databaseFilename":""
},
"macFrameworkPath":[
"/System/Library/Frameworks",
"/Library/Frameworks"
]
},
{
"name":"linux",
"includePath":[
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"defines":[],
"intelliSenseMode":"clang-x64",
"browse":{
"path":[
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders":true,
"databaseFilename":""
}
},
{
"name":"Win32",
"includePath":[
"E:/Cygwin/usr/include",
"E:/cygwin/lib/gcc/i686-pc-cygwin/6.4.0/include",
"E:/cygwin/lib/gcc/i686-pc-cygwin/6.4.0/install-tools/include",
"${workspaceRoot}"
],
"defines":[
"_DEBUG",
"UNICODE"
],
"intelliSenseMode":"msvc-x64",
"browse":{
"path":[
"E:/Cygwin/usr/include",
"E:/cygwin/lib/gcc/i686-pc-cygwin/6.4.0/include",
"E:/cygwin/lib/gcc/i686-pc-cygwin/6.4.0/install-tools/include",
"${workspaceRoot}"
],
"limitSymbolsToIncludedHeaders":true,
"databaseFilename":""
}
}
],
"version":3
}

2. Linux下用gcc編譯C++文件時,所添加的庫是默認在哪個目錄下的我用的是Ubuntu12.10的系統

Linux下函數默認將頭文件放到/usr/include/目錄下,庫文件放到/usr/lib/目錄下

來自課件,請採納

3. ubuntu 驅動編譯無法通過 求神來解決

復制代碼
1 #ifndef __KERNEL__
2 # define __KERNEL__
3 #endif
4 #ifndef MODULE
5 # define MODULE
6 #endif
7
8 // 下面的是主要的內容
9 #include <linux/kernel.h>
10 #include <linux/mole.h>
11 #include <linux/init.h>
12
13 MODULE_LICENSE("GPL");
14
15 static int year=2012;
16
17 int hello_init()
18 {
19 printk(KERN_WARNING "Hello kernel, it's %d!\n",year);
20 return 0;
21 }
22
23
24 void hello_exit()
25 {
26 printk("Bye, kernel!\n");
27 }
28
29 // 下面兩個為關鍵的模塊函數
30 mole_init(hello_init);
31 mole_exit(hello_exit);
復制代碼
如果上面的代碼看起來不太熟悉,那麼需要查看以下相關的書籍,比如《Linux設備驅動程序,第三版》,也就是大名鼎鼎的LDD;

2、老式驅動模塊編譯方法:

直接寫出make規則到makefile文件中,引用內核體系的頭文件路徑,舉例如下:

復制代碼
1 # The path of kernel source code
2 INCLUDEDIR = /media/GoldenResources/linux/linux-2.6.30/include
3
4 # Compiler
5 CC = gcc
6
7 # Options
8 CFLAGS = -D__KERNEL__ -DMODULE -O -Wall -I$(INCLUDEDIR)
9
10 # Target
11 OBJS = hello.o
12
13 all: $(OBJS)
14
15 $(OBJS): hello.c
16 $(CC) $(CFLAGS) -c $<
17
18 install:
19 insmod $(OBJS)
20
21 uninstall:
22 rmmod hello
23
24 .PHONY: clean
25 clean:
26 rm -f *.o
復制代碼
這里有我是用的一個linux內核源代碼路徑:/media/GoldenResources/linux/linux-2.6.30/include ,注意設置到正確的源碼路徑。

嘗試這編譯:

復制代碼
$make
gcc -D__KERNEL__ -DMODULE -O -Wall -I/media/GoldenResources/linux/linux-2.6.30/include -c hello.c
In file included from /media/GoldenResources/linux/linux-2.6.30/include/linux/kernel.h:11:0,
from hello.c:8:
/media/GoldenResources/linux/linux-2.6.30/include/linux/linkage.h:5:25: fatal error: asm/linkage.h: No such file or directory
compilation terminated.
make: *** [hello.o] Error 1
復制代碼

4. Linux入門系列——軟體包管理

RedHat 系統中使用的是: rpm (redhat package manager) 現在稱:RPM is Package Manager

Debian : dpt

Ubuntu : apt

在安裝軟體的時候,有可能出現軟體包的相互依賴關系;所以紅帽公司推出了:yum(Yellowdog update modifier)

包的組成部分:

主包:

bind-9.7.1-1..e15.i586.rpm

子包:

bind-libs-9.7.1-1..e15.i586.rpm

bind-utils-9.7.1-1..e15.i586.rpm

包名:

PackageName-Version-Release.Arch.rpm

bind-major-minor-releases-release.arch.rpm

包名-主版本號-次版本號-發行號-rpm包的製作者的發行號.硬體平台.rpm

主版本號:重大改進;

次版本號:某個子功能發生重大變化;

發行號:修改BUG,調整了一點功能;

bind-9.7.1-1.noarch.rpm 這里的noarch表示不區分硬體平台,32和64都可以使用;如果是ppc則是在PowerPc上使用的包;

# rpm -ivh /path/to/Package_Name

-i,--install 表示安裝

-v 表示顯示安裝過程的信息

-h 表示以#顯示安裝的進程,總數為50個;

-vv 顯示更詳細的過程;

--nodeps 安裝的時候忽略依賴關系;

--force 無論之前是否安裝過,都強制安裝,可以實現重裝、降級;

--replacepkgs 重新安裝,替換原有的安裝;

--oldpackage 對軟體包進行降級;

--test Do not install the package, simply check for and report potential conflicts. 不進行安裝,只測試看在安裝的時候有沒有依賴包要裝;

rpm -q soft_name

# rpm -q httpd

rpm -qa 查詢當前系統中已經安裝的rpm軟體包;

# rpm -qa |grep 『ssh*』

rpm -qi soft_name 查詢軟體包的安裝信息:

[root@ns2 rpm]# rpm -qi zlib-devel

Name : zlib-devel Relocations: /usr

Version : 1.2.3 Vendor: CentOS

Release : 4.el5 Build Date: 2011年05月11日 星期三 18時57分15秒

Install Date: 2013年07月21日 星期日 17時02分41秒 Build Host: builder10.centos.org

Group : Development/Libraries Source RPM: zlib-1.2.3-4.el5.src.rpm

Size : 269981 License: BSD

Signature : DSA/SHA1, 2011年09月04日 星期日 03時24分25秒, Key ID a8a447dce8562897

URL : http://www.gzip.org/zlib/

Summary : Zlib 開發的頭文件和庫。

Description :

zlib-devel 軟體包包括開發使用 zlib 壓縮和解縮庫的程序

所需的頭文件和庫。

[root@ns2 rpm]#

rpm -ql soft_name 查看該軟體包在系統中存放了哪些文件;

rpm -qf /path/to/file_name 查看該文件是由哪個rpm包生成的。

rpm -qc soft_name 查看指定rpm包安裝的配置文件的位置;

rpm -qd soft_name 查看指定rpm包安裝的幫助文件的位置;

rpm -q --scripts soft_name 查看指定rpm包在安裝、卸載、更新的前後,所要執行的shell腳本;

rpm -qp[i|l|d|c|] 即要加上一個「p」選項;

rpm -Uvh /path/to/package_name

如果安裝的指定的軟體包已經安裝過,則進行升級操作,如果沒有安裝過,則就使用指定的這個軟體包進行安裝;

rpm -Fvh /path/to/package_name

如果安裝過,則升級,否則不進行任何操作;

rpm -Fvh --oldpackage package_name 通常用這個來降級一個rpm包;

rpm -e package_name

--nodeps 強制卸載

rpm -V package_name 也可以使用--verify

通常用來檢查安裝後的文件是不是被修改過;

加密演算法:

對稱加密: 加密和解密使用同一個key

非對稱加密:有一對密鑰(公鑰和私鑰),公鑰大家都可以知道,私鑰只有持有人知道;公鑰加密私鑰解,私鑰加密公鑰也可以解。不能由公鑰摧出私鑰,也不能由私鑰摧出公鑰;私鑰還用來做簽名,因為只有私鑰持有人自己才有;

單向加密:使用這種加密演算法加密後,是不可以再還原的。通常用它來做數據完整性的驗證,也就是驗證數據在傳輸的過程中有沒有被別人修改過。

在紅帽的系統中,/etc/pki/rpm-gpg/目錄下面存放了紅帽公司的gpg-key(相當於公鑰),所以只需要把這個gpgkey導入到系統中就可以驗證了。導入方法如下:

# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

接下來就可以對將要安裝的rpm包進行驗證了:

# rpm -K /path/to/package_file

dsa,gpg驗證來源的合法性,也就是驗證簽名。但是可以使用--nosignature 來跳過簽名驗證;

sha1,md5驗證軟體包的完整性,可以使用--nodigest 來跳過完整性驗證;

rpm --rebuilddb 重建資料庫

--initdb 初始化資料庫

yum install -y pack1 pack2 安裝指定的軟體包

yum remove pack1 pack2 -y 刪除指定的軟體包

yum update pack1 pack2 更新指定的軟體包

yum list installed 列出所有已經安裝的軟體包

yum update 更新源

yum search string 搜索包含string的軟體包

yum install package_name 獲取軟體包信息

# tar zxf nginx-1.4.7.tar.gz -C /usr/src

# configure --prefix=/usr/local/nginx --conf-path=/etc

# make

# make install

由於使用的是源碼包安裝在非正常路徑下。所以還要做以下的調整:

修改/etc/profile文件。或是在/etc/profile.d/下創建一個以.sh結尾的文件;再把二進製程序的路徑export出來就行了;

在/etc/ld.so.conf.d/中創建一個以.conf文件結尾的文件,而後把要增添的路徑直接寫入此文件中就行了;

這樣系統就會在下次啟動的時候,自動載入這些新增加的庫;如果想讓系統馬上可以找到這些新增加的庫,就必須執行下面的命令:

# ldconfig 通知系統重新搜索庫文件,還可以加上-v選項,表示顯示過程;

默認的頭文件搜索路徑是:/usr/include/

要添加新的頭文件搜索路徑,可以使用鏈接的方式:

ln -s /usr/local/nginx/include/* /usr/include/



ln -s /usr/local/nginx/include /usr/include/nginx

這時可以修改/etc/man.conf文件,在裡面添加以下內容:

MANPATH /usr/local/nginx/man

還有一種方式就是臨時使用:

# man -M /usr/local/nginx/man nginx 這樣就可以查看nginx的man手冊了;

閱讀全文

與ubuntulinux頭文件路徑相關的資料

熱點內容
mdfldf是什麼文件 瀏覽:569
文件在桌面怎麼刪除干凈 瀏覽:439
馬蘭士67cd機版本 瀏覽:542
javaweb爬蟲程序 瀏覽:537
word中千位分隔符 瀏覽:392
迷你編程七天任務的地圖怎麼過 瀏覽:844
word2003格式不對 瀏覽:86
百度雲怎麼編輯文件在哪裡 瀏覽:304
起名app數據哪裡來的 瀏覽:888
微信怎麼去泡妞 瀏覽:52
百度廣告html代碼 瀏覽:244
qq瀏覽器轉換完成後的文件在哪裡 瀏覽:623
jsp中的session 瀏覽:621
壓縮完了文件去哪裡找 瀏覽:380
武裝突襲3浩方聯機版本 瀏覽:674
網路機頂盒移動網路 瀏覽:391
iphone手機百度雲怎麼保存到qq 瀏覽:148
資料庫設計與實踐讀後感 瀏覽:112
js對象是什麼 瀏覽:744
網頁文件存pdf 瀏覽:567

友情鏈接