1. 程式人生 > >CentOS 7 下 modutils-2.4.27 編譯時遇到的問題

CentOS 7 下 modutils-2.4.27 編譯時遇到的問題

1.下載
官方下載地址
Modutils (2.4.27):

https://www.kernel.org/pub/linux/utils/kernel/modutils/v2.4/

2.解壓
tar -zxvf modutils-2.4.27.tar.gz

3.生成makefile
./configure

4.make
4.1 錯誤:
In file included from obj_kallsyms.c:26:
./../include/util.h:42: warning: built-in function ‘log’ declared as non-function
obj_kallsyms.c: In function ‘obj32_kallsyms’:
obj_kallsyms.c:204: error: lvalue required as left operand of assignment
obj_kallsyms.c:279: error: lvalue required as left operand of assignment
make[1]: *** [obj_kallsyms.o] 錯誤 1
make[1]: Leaving directory '/usr/src/redflag/BUILD/modutils-2.4.27/obj'
make: *** [all] 錯誤 2

修改:
(1)將obj_kallsyms.c檔案修改如下
將204行的:
 a_hdr = (struct kallsyms_header *) osec->contents =xmalloc(osec->header.sh_size);
改成:
  osec->contents = xmalloc(osec->header.sh_size);
  a_hdr = (struct kallsyms_header *) osec->contents;

將279行的:
  a_hdr = (struct kallsyms_header *) osec->contents = xrealloc(a_hdr, a_hdr->total_size);
改成:
  osec->contents = xrealloc(a_hdr, a_hdr->total_size);
  a_hdr = (struct kallsyms_header *) osec->contents;


 
4.2 繼續make,再錯誤
In file included from insmod.c:79:
./../include/util.h:42: warning: built-in function ‘log’ declared as non-function
insmod.c: In function ‘add_symbols_from’:
insmod.c:278: error: lvalue required as left operand of assignment
make[1]: *** [insmod.o] 錯誤 1
make[1]: Leaving directory ‘/usr/src/redflag/BUILD/modutils-2.4.27/insmod’
make: *** [all] 錯誤 2
error: Bad exit status from /var/tmp/rpm-tmp.36012 (%build)
 
修改:
將insmod.c檔案的第278行
 ((char *)s->name) += 8;
改成
 s->name = (void *)((long)(s->name)+8);
再繼續編譯。


4.3 繼續報錯:
In file included from genksyms.c:32:
./../include/util.h:42: warning: built-in function ‘log’ declared as non-function
genksyms.c:48: error: static declaration of ‘errors’ follows non-static declaration
./../include/util.h:43: error: previous declaration of ‘errors’ was here
make[1]: *** [genksyms.o] 錯誤 1
make[1]: Leaving directory ‘/usr/src/redflag/BUILD/modutils-2.4.27/genksyms’
make: *** [all] 錯誤 2
error: Bad exit status from /var/tmp/rpm-tmp.97956 (%build)
 
修改:
將genksyms.c第48行的語句
 static int errors;
移到檔案的開頭,緊跟註釋後的第一行去。

4.4 繼續報錯:
bison: Command not found
 
修改:
sudo apt-get install bison

4.5 繼續編譯,繼續報錯
flex:Command not found
修改:
sudo apt-get install flex

4.6 繼續編譯,繼續報錯
In file included from depmod.c:44:
./../include/util.h:42: warning: built-in function ‘log’ declared as non-function
depmod.c: In function ‘addksyms’:
depmod.c:1136: error: lvalue required as left operand of assignment
make[1]: *** [depmod.o] 錯誤 1
make[1]: Leaving directory ‘/usr/src/redflag/BUILD/modutils-2.4.27/depmod’
make: *** [all] 錯誤 2
error: Bad exit status from /var/tmp/rpm-tmp.36319 (%build)

修改:
將depmod.c的第1136行:
 ((char *)ksym->name) += 8;
改成:
 ksym->name = (void *)((long)(ksym->name)+8);

5. 終於編譯成功,可以到insmod目錄下,使用insmod指令載入模組了。注意編譯出來的insmod指令只適合2.6 核心以前的版本。這個版本的modutils程式碼中的很多系統呼叫在現在的linux核心中已不存在。若想insmod指令能使用新版本的核心,需要下載最新的busybox原始碼去編譯,編譯出的insmod指令可以在新核心上使用。

相關推薦

CentOS 7 modutils-2.4.27 編譯遇到的問題

1.下載 官方下載地址 Modutils (2.4.27): https://www.kernel.org/pub/linux/utils/kernel/modutils/v2.4/ 2.解壓 tar -zxvf modutils-2.4.27.tar.gz 3.生

Centos 6.9 apahce 2.4.29編譯安裝

編譯安裝apache 2.4.29 Centos 6.9 httpd2.4 實驗環境:VMware Workstation Pro 14(試用版) 系統平臺: CentOS release 6.9 (Final) 內核 2.6.32-696.el6.x86_64 1.去官網下

CentOS 7MariaDB源碼包編譯安裝

lib make 保存 使用 dir zlib 數據庫的安裝 RM .org 下載安裝包 到官網下載MariaDB 10.2系列穩定版的源碼包 選擇源碼包 點擊鏈接後頁面會跳到下載頁面,頁面中有個信息表格可以填寫,這裏我們就直接跳過,點擊 No thanks, just t

CentOS 7安裝zabbix-2.4.8監控

執行 rac useradd 錯誤 pts latest 更改 執行權限 exe 說明: 操作系統:CentOS 7 Web環境:Nginx+MySQL+PHP zabbix版本:zabbix-2.4.8.tar.gz 備註:Linux下安裝zabbix需要有LAM

CentOS 7安裝redis 4.0.6

安裝redis 第一步:下載redis安裝包 wget http://download.redis.io/releases/redis-4.0.6.tar.gz 第二步:解壓壓縮包 tar -zxvf redis-4.0.6.tar.gz 第三步:yum安裝gcc依賴

CentOS 7最新版(6.2.4)ELK+Filebeat+Log4j日誌集成環境搭建完整指南

pan 而是 17. 現在 關於 vim 提高 用處 新版 現在的公司由於絕大部分項目都采用分布式架構,很早就采用ELK了,只不過最近因為額外的工作需要,仔細的研究了分布式系統中,怎麽樣的日誌規範和架構才是合理和能夠有效提高問題排查效率的。經過仔細的分析和研究,確定下面的架

ELK學習筆記之CentOS 7ELK(6.2.4)++LogStash+Filebeat+Log4j日誌整合環境搭建

  0x00 簡介 現在的公司由於絕大部分專案都採用分散式架構,很早就採用ELK了,只不過最近因為額外的工作需要,仔細的研究了分散式系統中,怎麼樣的日誌規範和架構才是合理和能夠有效提高問題排查效率的。 經過仔細的分析和研究,確定下面的架構應該是比較合理的之一(Filebeat也支援直

CentOS 7安裝部署Zabbix3.4

zabbix zabbix3.4 centos7 Zabbix安裝: 環境: 系統環境:CentOS 7Zabbix版本:Zabbix 3.4 安裝步驟: 關閉防火墻和SELINUXsystemctl stop firewalld && setenforce 0 安裝zabb

CentOS 7安裝Python3.6.4

編譯 python str CA 目錄 wget gdbm grep www. CentOS 7下安裝Python3.6.4 •安裝python3.6可能使用的依賴 yum install -y openssl-devel bzip2-devel expat-

Centos 7.3安裝HGDB 4.3.2說明文件

[[email protected] upload]# vi /etc/sysctl.conf [[email protected] upload]# sysctl -p net.core.wmem_default = 262144 fs.file-max = 767

Centos 7編譯安裝Apache

相關 apache chmod src 開機自啟 啟用 prefix 目錄 col (1)下載apr、apr-util、httpd源碼包 百度雲下載地址:https://pan.baidu.com/s/1HyW_9XTLhhhf5j_IuNCQsQ 提取碼:pg4d (2

Centos 7編譯安裝Linux-3.18.44-rt47核心

獲取原始碼以及補丁 從Linux核心官網上下載3.18.44版本的核心原始碼,並且從rt.wiki上下載相對應的補丁,用於支援核心實時性。 安裝編譯所依賴的庫 yum -y groupin

centos 7ffmpeg-4.0 裡264編碼例子測試

1, 進入/root/ffmpeg-4.0/doc/examples裡新增 個compile_encode_video.sh檔案vim compile_encode_video.sh 內容如下:gcc encode_video.c -g -o encode_video.out

CentOS 7編譯安裝Nginx+PHP+MySQL環境

1、前言 本文適合於已經對Linux作業系統具有基本操作經驗,並且能夠在Linux或Windows上通過一鍵搭建工具或者yum命令列進行環境搭建的讀者,閱讀本文需具有一定的專業知識,本文不建議初學者閱讀。 本文所描述的是在標準的CentOS 7

CentOS 7安裝使用Github

git push 文件 rep ica not 使用 管理系統 非root oba 在虛擬機安裝了QT以後,想把工程代碼放在版本管理系統軟件裏面,免得一遍遍創建checkpoint麻煩的要死。又因為虛擬機跟物理機數據很難交互,只好借助github了。搜了搜安裝配置方法,記錄

centos 7 安裝Matplotlib

matplotlib[[email protected]/* */ bin]# [[email protected]/* */ bin]# [[email protected]/* */ bin]# [[email protected]/* */ bin]# p

centos 7 多網卡綁定

add ima 鏈接 刪除 維護 謝謝 學習總結 drive 查看 一、前言  CentOS7之前系統提供給用戶的是bonding driver來實現鏈路聚合,實際上bonding適用於大多數應用。Bonding driver的架構是由內核空間完全控制、管理。 Team d

Linux CentOS 7 jdk安裝

$path 環境變量 創建 mkdir jdk1.8 jdk .tar.gz file 設置環境變量 1.在/usr/目錄下創建java目錄 [[email protected]/* */ ~]# mkdir /usr/java[[email prot

源碼安裝 apache 2.4.27

源碼安裝 apache 2.4.27源碼安裝 apache 2.4.27登陸apache官網下載源碼安裝包http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.27.tar.gz下載所需軟件源碼包§ ApacheApr: http://mirr