當前位置:首頁 » 編程軟體 » centos編譯模塊

centos編譯模塊

發布時間: 2022-05-12 20:23:34

Ⅰ CentOS中怎樣安裝C語言編譯

直接在網路搜索C語言編譯器手機版,然後就可以找到下載連接;C語言是一種結構化語言。它層次清晰,便於按模塊化方式組織程序,易於調試和維護。C語言的表現能力和處理能力極強。它不僅具有豐富的運算符和數據類型,便於實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。

linux動態模塊怎樣編譯

編譯模塊的make file 必須是Makefile,不能是makefile. //why?

ifneq ($(KERNELRELEASE),)
obj-m := your.o
mytest-objs := file1.o file2.o file3.o
else
KDIR := /lib/moles/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) moles
endif

把your換成你的source name ,然後保存為Mafefile ,make 一次就可以了。

Ⅲ centos 使用yum安裝nginx後如何添加模塊

1.確認你已經安裝在用的nginx信息

nginx-V

#停掉nginx服務
servicenginxstop
#進入解壓的nginx-1.10.3目錄
cdnginx-1.10.3
#編譯./configure後面加上第1步nginx-V查看到的所有配置參數,後面加上你要加的模塊配置
./configure--prefix=/etc/nginx--sbin-path=/usr/sbin/nginx...(太長我省略了)--add-mole=/root/nginx-rtmp-mole-1.1.10
make
千萬別makeinstall
驗證新nginx是否可用驗證編譯後的nginx是否可以使用已有的配置
./objs/nginx-t
使用新nginx
備份cp/usr/sbin/nginx/usr/sbin/nginx-bak
替換cp./objs/nginx/usr/sbin/nginx

ok了,重啟nginx
servicenginxstart
祝你成功!

Ⅳ 如何在CentOS安裝NistNet

1、操作系統CentOS安裝:
經過多次安裝測試CentOS安裝,採用完整版光碟安裝,因為安裝nistnet需要編譯內核
2、CentOS安裝後,下載相關軟體包
linux-2.6.18.8.tar.gz
下載地址如:http://www.kernel.org/pub/linux/kernel/v2.6/
nistnet.2.0.12c.tar.gz
下載地址如:http://www-x.antd.nist.gov/cgi-bin/nistnet-distribution
3、編譯內核
# tar zxvf linux-2.6.18.8.tar.gz
# cd /usr/src/
# ln –s /root/ linux-2.6.18.8/ linux
# cd linux
# make mrproper //刪除不穩定的.o文件和.config文件
# make menuconfig
Device Drivers --->
| Character devices -->
| Enhanced Real Time Clock Suppot --M //按M鍵,設置
# make dep //連接程序代碼和函數庫
# make clean //刪不必要的模塊
# make bzImage //生成內核文件
# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.18-8_new //注意正確路徑
# make moles //編譯外掛模塊
# make moles_install //安裝編譯完成的模塊
# make install
# mkinitrd /boot/initrd-2.6.18-8_new.img 2.6.18.8
# vi /boot/grub/grub.conf //添加啟動項,內容如下:
title Centos (2.6.18-8_new)
root (hd0,0)
kernel /vmlinuz-2.6.18-8_new ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-8_new.img
//注意default=x (x為以上添加的選項,從0開始)
# init 6
4、CentOS安裝NistNet
# tar zxvf nistnet.2.0.12c.tar.gz
# ln –s nistnet-3.0a nistnet
# cd nistnet
# ./ configure
# make
#*********************此處會出現error需要作以下修改**********************
1)、~/nistnet-3.0a/kernel/knistnet.c
找到916、961、972、1003行,添加參數NULL,如:
return ippt->func(skb, dev, ippt);à return ippt->func(skb, dev, ippt,NULL);
2)、/lib/moles/2.6.18.8/build/include/asm/rwsem.h
找到104、156、198、224、249行,(不知道匯編的具體含義)注釋掉,如:
LOCK_SECTION_START("") à // LOCK_SECTION_START("")
3)、/lib/moles/2.6.18.8/build/include/asm/semaphore.h
找到105、130、155、179行,(不知道匯編的具體含義)注釋掉,如:
LOCK_SECTION_START("") à // LOCK_SECTION_START("")
#*********************再重新編譯******************************************
# make
# make install
5、測試安裝是否成功
# cd ~nistnet/
# ./Load nistnet
# cnistnet –u
查看ping的情況:

[root@localhost nistnet]# cnistnet -a 192.168.2.2 192.168.2.11 --delay 50
addnistnet: 192.168.2.2:0 to 192.168.2.11:0 (prot 0 cos 0),
delay 50.000000 (sigma 0.000000 corr 0.000000),
bandwidth 0, drop 0.000000 (corr 0.000000),
p 0.000000 (corr 0.000000),
drdmin 0, drdmax 0, drdcongest 0
[root@localhost nistnet]#

[root@localhost nistnet]# cnistnet -a 192.168.2.2 192.168.2.11 --drop 50
addnistnet: 192.168.2.2:0 to 192.168.2.11:0 (prot 0 cos 0),
delay 0.000000 (sigma 0.000000 corr 0.000000),
bandwidth 0, drop 50.000000 (corr 0.000000),
p 0.000000 (corr 0.000000),
drdmin 0, drdmax 0, drdcongest 0
[root@localhost nistnet]#
6、CentOS安裝NistNet完成

至此NistNet已經成功在CentOS安裝,接下來就是實用問題,關於nistnet的具體使用,此處不做過多說明,參見http://snad.ncsl.nist.gov/nistnet/usage.html

Ⅳ centos 下編譯了APACHE,現在想增加openldap模塊要怎麼做啊

Centos下apache就不用編譯,直接yum安裝。
既然你都編譯安裝了,就繼續這條荊棘路吧,一般要增加模塊都是./configure --enabledxxx這樣的參數(大致方法是這樣,看看文檔就清楚了),相應地,其它要依賴的庫(比如這里的openldap)也要先弄好,(其它庫也分yum安裝和自己編譯安裝,前者是yum install openldap-devel,後者跟你編譯apache套路一樣),configure成功後make && make install一樣的了。
說實在的,開始時make make還好玩些,後面還是這樣玩就是折騰自己了。
如果我的回答沒能幫助您,請繼續追問。
轉載,僅供參考。

Ⅵ centos 使用yum安裝nginx後如何添加模塊

【操作步驟】

  1. 確認你已經安裝在用的nginx信息

    Ⅶ centos 編譯 php後需要加入新的模塊。如何在不改變原設置的基礎上編譯加入

    保險做法:備份配置文件,事後覆蓋回去

    Ⅷ centos 6.6怎麼升級內核

    1. 准備工作
    確認內核及版本信息
    [root@hostname ~]# uname -r
    2.6.32-220.el6.x86_64
    [root@hostname ~]# cat /etc/centos-release
    CentOS release 6.5 (Final)
    安裝軟體
    編譯安裝新內核,依賴於開發環境和開發庫
    # yum grouplist //查看已經安裝的和未安裝的軟體包組,來判斷我們是否安裝了相應的開發環境和開發庫;
    # yum groupinstall "Development Tools" //一般是安裝這兩個軟體包組,這樣做會確定你擁有編譯時所需的一切工具
    # yum install ncurses-devel //你必須這樣才能讓 make *config 這個指令正確地執行
    # yum install qt-devel //如果你沒有 X 環境,這一條可以不用
    # yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel //創建 CentOS-6 內核時需要它們
    如果當初安裝系統是選擇了Software workstation,上面的安裝包幾乎都已包含。
    2. 編譯內核
    獲取並解壓內核源碼,配置編譯項

    Linux內核版本有兩種:穩定版和開發版 ,Linux內核版本號由3個數字組成:r.x.y
    r: 主版本號
    x: 次版本號,偶數表示穩定版本;奇數表示開發中版本。
    y: 修訂版本號 , 表示修改的次數
    去 http://www.kernel.org 首頁,可以看到有stable, longterm等版本,longterm是比stable更穩定的版本,會長時間更新,因此我選擇 3.10.58。

    [root@sean ~]#wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.28.tar.xz

    [root@sean ~]# tar -xf linux-3.10.58.tar.xz -C /usr/src/
    [root@sean ~]# cd /usr/src/linux-3.10.58/
    [root@sean linux-3.10.58]# cp /boot/config-2.6.32-220.el6.x86_64 .config
    我們在系統原有的內核配置文件的基礎上建立新的編譯選項,所以復制一份到當前目錄下,命名為.config。接下來繼續配置:
    [root@sean linux-3.10.58]# sh -c 'yes "" | make oldconfig'
    HOSTCC scripts/basic/fixdep
    HOSTCC scripts/kconfig/conf.o
    SHIPPED scripts/kconfig/zconf.tab.c
    SHIPPED scripts/kconfig/zconf.lex.c
    SHIPPED scripts/kconfig/zconf.hash.c
    HOSTCC scripts/kconfig/zconf.tab.o
    HOSTLD scripts/kconfig/conf
    scripts/kconfig/conf --oldconfig Kconfig
    .config:555:warning: symbol value 'm' invalid for PCCARD_NONSTATIC
    .config:2567:warning: symbol value 'm' invalid for MFD_WM8400
    .config:2568:warning: symbol value 'm' invalid for MFD_WM831X
    .config:2569:warning: symbol value 'm' invalid for MFD_WM8350
    .config:2582:warning: symbol value 'm' invalid for MFD_WM8350_I2C
    .config:2584:warning: symbol value 'm' invalid for AB3100_CORE
    .config:3502:warning: symbol value 'm' invalid for MMC_RICOH_MMC
    *
    * Restart config...
    *
    *
    * General setup
    *
    ... ...
    XZ decompressor tester (XZ_DEC_TEST) [N/m/y/?] (NEW)
    Averaging functions (AVERAGE) [Y/?] (NEW) y
    CORDIC algorithm (CORDIC) [N/m/y/?] (NEW)
    JEDEC DDR data (DDR) [N/y/?] (NEW)
    #
    # configuration written to .config
    make oldconfig會讀取當前目錄下的.config文件,在.config文件里沒有找到的選項則提示用戶填寫,然後備份.config文件為.config.old,並生成新的.config文件,參考http://stackoverflow.com/questions/4178526/what-does-make-oldconfig-do-exactly-linux-kernel-makefile
    有的文檔里介紹使用make memuconfig,它便是根據需要定製模塊,類似界面如下:(在此不需要)

    開始編譯
    [root@sean linux-3.10.58]# make -j4 bzImage //生成內核文件
    [root@sean linux-3.10.58]# make -j4 moles //編譯模塊
    [root@sean linux-3.10.58]# make -j4 moles_install //編譯安裝模塊
    -j後面的數字是線程數,用於加快編譯速度,一般的經驗是,邏輯CPU,就填寫那個數字,例如有8核,則為-j8。(moles部分耗時30多分鍾)
    安裝
    [root@sean linux-3.10.58]# make install
    實際運行到這一步時,出現ERROR: modinfo: could not find mole vmware_balloon,但是不影響內核安裝,是由於vsphere需要的模塊沒有編譯,要避免這個問題,需要在make之前時修改.config文件,加入
    HYPERVISOR_GUEST=yCONFIG_VMWARE_BALLOON=m
    (這一部分比較容易出問題,參考下文異常部分)
    修改grub引導,重啟
    安裝完成後,需要修改Grub引導順序,讓新安裝的內核作為默認內核。
    編輯 grub.conf文件,
    vi /etc/grub.conf
    #boot=/dev/sda
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (3.10.58)
    root (hd0,0)
    ...
    數一下剛剛新安裝的內核在哪個位置,從0開始,然後設置default為那個數字,一般新安裝的內核在第一個位置,所以設置default=0。
    重啟reboot:
    boot-with-new-kernel
    確認當內核版本
    [root@sean ~]# uname -r
    3.10.58
    升級內核成功!
    3. 異常
    編譯失敗(如缺少依賴包)
    可以先清除,再重新編譯:
    # make mrproper #完成或者安裝過程出錯,可以清理上次編譯的現場
    # make clean
    在vmware虛擬機上編譯,出現類似下面的錯誤
    [root@sean linux-3.10.58]# make install
    sh /usr/src/linux-3.10.58/arch/x86/boot/install.sh 3.10.58 arch/x86/boot/bzImage \
    System.map "/boot"
    ERROR: modinfo: could not find mole vmware_balloon
    可以忽略,如果你有強迫症的話,嘗試以下辦法:
    要在vmware上需要安裝VMWARE_BALLOON,可直接修改.config文件,但如果vi直接加入CONFIG_VMWARE_BALLOON=m依然是沒有效果的,因為它依賴於HYPERVISOR_GUEST=y。如果你不知道這層依賴關系,通過make menuconfig後,Device Drivers -> MISC devices 下是找不到VMware Balloon Driver的。(手動vi .config修改HYPERVISOR_GUEST後,便可以找到這一項),另外,無論是通過make menuconfig或直接vi .config,最後都要運行sh -c 'yes "" | make oldconfig'一次得到最終的編譯配置選項。
    然後,考慮到vmware_balloon可能在這個版本里已更名為vmw_balloon,通過下面的方法保險起見:
    # cd /lib/moles/3.10.58/kernel/drivers/misc/
    # ln -s vmw_balloon.ko vmware_balloon.ko #建立軟連接
    其實,針對安裝docker的內核編譯環境,最明智的選擇是使用sciurus幫我們配置好的.config文件。
    也建議在make bzImage之前,運行腳本check-config.sh檢查當前內核運行docker所缺失的模塊。
    當提示缺少其他mole時如NF_NAT_IPV4時,也可以通過上面的方法解決,然後重新編譯。

    4. 幾個重要的Linux內核文件介紹

    在網路中,不少伺服器採用的是Linux系統。為了進一步提高伺服器的性能,可能需要根據特定的硬體及需求重新編譯Linux內核。編譯Linux內核,需要根據規定的步驟進行,編譯內核過程中涉及到幾個重要的文件。比如對於RedHat Linux,在/boot目錄下有一些與Linux內核有關的文件,進入/boot執行:ls –l。編譯過RedHat Linux內核的人對其中的System.map 、vmlinuz、initrd-2.4.7-10.img印象可能比較深刻,因為編譯內核過程中涉及到這些文件的建立等操作。那麼這幾個文件是怎麼產生的?又有什麼作用呢?
    (1)vmlinuz
    vmlinuz是可引導的、壓縮的內核。「vm」代表「Virtual Memory」。Linux 支持虛擬內存,不像老的操作系統比如DOS有640KB內存的限制。Linux能夠使用硬碟空間作為虛擬內存,因此得名「vm」。vmlinuz是可執行的Linux內核,它位於/boot/vmlinuz,它一般是一個軟鏈接。
    vmlinuz的建立有兩種方式。
    一是編譯內核時通過「make zImage」創建,然後通過:「cp /usr/src/linux-2.4/arch/i386/linux/boot/zImage /boot/vmlinuz」產生。zImage適用於小內核的情況,它的存在是為了向後的兼容性。
    二是內核編譯時通過命令make bzImage創建,然後通過:「cp /usr/src/linux-2.4/arch/i386/linux/boot/bzImage /boot/vmlinuz」產生。
    bzImage是壓縮的內核映像,需要注意,bzImage不是用bzip2壓縮的,bzImage中的bz容易引起誤解,bz表示「big zImage」。 bzImage中的b是「big」意思。
    zImage(vmlinuz)和bzImage(vmlinuz)都是用gzip壓縮的。它們不僅是一個壓縮文件,而且在這兩個文件的開頭部分內嵌有gzip解壓縮代碼。所以你不能用gunzip 或 gzip –dc解包vmlinuz。
    內核文件中包含一個微型的gzip用於解壓縮內核並引導它。兩者的不同之處在於,老的zImage解壓縮內核到低端內存(第一個640K),bzImage解壓縮內核到高端內存(1M以上)。如果內核比較小,那麼可以採用zImage 或bzImage之一,兩種方式引導的系統運行時是相同的。大的內核採用bzImage,不能採用zImage。
    vmlinux是未壓縮的內核,vmlinuz是vmlinux的壓縮文件。
    (2) initrd-x.x.x.img
    initrd是「initial ramdisk」的簡寫。initrd一般被用來臨時的引導硬體到實際內核vmlinuz能夠接管並繼續引導的狀態。比如,使用的是scsi硬碟,而內核vmlinuz中並沒有這個scsi硬體的驅動,那麼在裝入scsi模塊之前,內核不能載入根文件系統,但scsi模塊存儲在根文件系統的/lib/moles下。為了解決這個問題,可以引導一個能夠讀實際內核的initrd內核並用initrd修正scsi引導問題。initrd-2.4.7-10.img是用gzip壓縮的文件,下面來看一看這個文件的內容。
    initrd實現載入一些模塊和安裝文件系統等。
    initrd映象文件是使用mkinitrd創建的。mkinitrd實用程序能夠創建initrd映象文件。這個命令是RedHat專有的。其它Linux發行版或許有相應的命令。這是個很方便的實用程序。具體情況請看幫助:man mkinitrd
    下面的命令創建initrd映象文件:
    (3) System.map
    System.map是一個特定內核的內核符號表。它是你當前運行的內核的System.map的鏈接。
    內核符號表是怎麼創建的呢? System.map是由「nm vmlinux」產生並且不相關的符號被濾出。對於本文中的例子,編譯內核時,System.map創建在/usr/src/linux-2.4/System.map。像下面這樣:
    nm /boot/vmlinux-2.4.7-10 > System.map
    下面幾行來自/usr/src/linux-2.4/Makefile:
    nm vmlinux | grep -v '(compiled)|(.o
    )|([aUw])|(..ng
    )|(LASH[RL]DI)' | sort > System.map

    然後復制到/boot:
    cp /usr/src/linux/System.map /boot/System.map-2.4.7-10
    在進行程序設計時,會命名一些變數名或函數名之類的符號。Linux內核是一個很復雜的代碼塊,有許許多多的全局符號。
    Linux內核不使用符號名,而是通過變數或函數的地址來識別變數或函數名。比如不是使用size_t BytesRead這樣的符號,而是像c0343f20這樣引用這個變數。
    對於使用計算機的人來說,更喜歡使用那些像size_t BytesRead這樣的名字,而不喜歡像c0343f20這樣的名字。內核主要是用c寫的,所以編譯器/連接器允許我們編碼時使用符號名,當內核運行時使用地址。
    然而,在有的情況下,我們需要知道符號的地址,或者需要知道地址對應的符號。這由符號表來完成,符號表是所有符號連同它們的地址的列表。Linux 符號表使用到2個文件:/proc/ksyms和System.map。
    /proc/ksyms是一個「proc file」,在內核引導時創建。實際上,它並不真正的是一個文件,它只不過是內核數據的表示,卻給人們是一個磁碟文件的假象,這從它的文件大小是0可以看出來。然而,System.map是存在於你的文件系統上的實際文件。當你編譯一個新內核時,各個符號名的地址要發生變化,你的老的System.map具有的是錯誤的符號信息。每次內核編譯時產生一個新的System.map,你應當用新的System.map來取代老的System.map。
    雖然內核本身並不真正使用System.map,但其它程序比如klogd, lsof和ps等軟體需要一個正確的System.map。如果你使用錯誤的或沒有System.map,klogd的輸出將是不可靠的,這對於排除程序故障會帶來困難。沒有System.map,你可能會面臨一些令人煩惱的提示信息。
    另外少數驅動需要System.map來解析符號,沒有為你當前運行的特定內核創建的System.map它們就不能正常工作。
    Linux的內核日誌守護進程klogd為了執行名稱-地址解析,klogd需要使用System.map。System.map應當放在使用它的軟體能夠找到它的地方。執行:man klogd可知,如果沒有將System.map作為一個變數的位置給klogd,那麼它將按照下面的順序,在三個地方查找System.map:
    /boot/System.map
    /System.map
    /usr/src/linux/System.map
    System.map也有版本信息,klogd能夠智能地查找正確的映象(map)文件。

    Ⅸ centos6.5 中,我想做個ftp虛擬用戶,虛擬用戶是mysql資料庫里的,為啥我編譯模塊時,

    因為你沒有安裝mysql-devel和vsftp-devel包
    編譯安裝的時候,必須要devel包。

    Ⅹ 如何參考centos7內核源碼

    1. 下載內核
    內核官網獲得了(不讓加鏈接,搜索linux內核官網 )
    tar.xz 是完整的內核包
    pgp 是.tar.sign後綴的文件,用於校驗類似於MD5
    patch 是補丁包

    2. 解壓文件,現在一般採用 .tar.xz 的壓縮格式(壓縮率最高,但是壓縮時間較長)。
    /usr/src 一般而言、我們製做linux內核的時候源碼一般放在這個路徑下,
    可以使用 # tar -Jxvf linux-3.13.2.tar.xz -C /usr/src/ 把文件解壓到 /usr/src/ 中(在root用戶下才有效)
    3. 如果是第一次編譯內核,並沒有上次的殘留文件可以可以跳過
    # make mrproper
    這個步驟

    注意:make clean 刪除大多數的編譯生成文件, 但是會保留內核的配置文件.config, 還有足夠的編譯支持來建立擴展模塊
    make mrproper 刪除所有的編譯生成文件, 還有內核配置文件, 再加上各種備份文件
    make distclean mrproper刪除的文件, 加上編輯備份文件和一些補丁文件。
    4. 接下來是 make config 。
    具體參照 《make config 的幾種類型》
    一般採用 # make menuconfig 的方式
    此處需要兩個包,選擇最簡單的yum安裝
    # yum -y install gcc 和
    # yum install ncurses ncurses-devel。
    具體選項的作用參考 《Linux-3.10-x86_64 內核配置選項簡介 》
    對新的內核功能選擇,並生成一個 .config 的文件

    5. 編譯內核
    # make 和 # make moles_install (此處命令必須進入/usr/src/linux-x-x-x/才有效,否則會報錯)

    注意:2.6內核作了優化,不必顯示的執行make dep 和make bzImage,只需要直接執行
    make 就行,系統會自動完成make dep 和 make bzImage 所做的工作。

    6. 安裝內核
    # make install

    7. 修改默認啟動的內核(把游標處的default值改成0,就為默認啟動,編譯成功後默認為1)

    # vim /boot/grub/grub.conf

    用 cat /boot/grub/grub.conf 驗證並測試
    # cat /boot/grub/grub.conf
    看是否添加成功

    8. 重啟機器,查看效果
    默認的內核就是剛才編譯成功的。。。

熱點內容
app什麼情況下找不到伺服器 發布:2025-05-12 15:46:25 瀏覽:714
php跳過if 發布:2025-05-12 15:34:29 瀏覽:467
不定時演算法 發布:2025-05-12 15:30:16 瀏覽:131
c語言延時1ms程序 發布:2025-05-12 15:01:30 瀏覽:165
動物園靈長類動物配置什麼植物 發布:2025-05-12 14:49:59 瀏覽:734
wifi密碼設置什麼好 發布:2025-05-12 14:49:17 瀏覽:148
三位數乘兩位數速演算法 發布:2025-05-12 13:05:48 瀏覽:397
暴風影音緩存在哪裡 發布:2025-05-12 12:42:03 瀏覽:540
access資料庫exe 發布:2025-05-12 12:39:04 瀏覽:628
五開的配置是什麼 發布:2025-05-12 12:36:37 瀏覽:364