Ubuntu 11 編譯 linux-2.6核心 出錯,給出部分編譯問題解決
#
make[2]:正在離開目錄 `/home/gdsdj/src/linux-2.6.19'
make EXTRAVERSION=dell1400 ARCH=i386 prepare
make[2]: 正在進入目錄 `/home/gdsdj/src/linux-2.6.19'
scripts/kconfig/conf -s arch/i386/Kconfig
make[2]:正在離開目錄 `/home/gdsdj/src/linux-2.6.19'
make[2]: 正在進入目錄 `/home/gdsdj/src/linux-2.6.19'
CHK include/linux/version.h
CHK include/linux/utsrelease.h
make[2]:正在離開目錄 `/home/gdsdj/src/linux-2.6.19'
echo done > debian/stamp/conf/kernel-conf
make[1]:正在離開目錄 `/home/gdsdj/src/linux-2.6.19'
make -f debian/rules debian/stamp/conf/full-changelog
make[1]: 正在進入目錄 `/home/gdsdj/src/linux-2.6.19'
====== making target debian/stamp/conf/full-changelog [new prereqs: ]======
for file in ChangeLog Control Control.bin86 config templates.in rules; do \
cp -f /usr/share/kernel-package/$file ./debian/; \
done
for dir in Config docs examples ruleset scripts pkg po; do \
cp -af /usr/share/kernel-package/$dir ./debian/; \
done
install -p -m 755 /usr/share/kernel-package/rules debian/rules
sed -e 's/=V/2.6.19dell1400/g' \
-e 's/=D/2.6.19dell1400-10.00.Custom/g' -e 's/=A/i386/g' \
-e 's/=SA//g' \
-e 's/=I//g' \
-e 's/=CV/2.6/g' \
-e 's/=M/Unknown Kernel Package Maintainer <
-e 's/=ST/linux/g' -e 's/=B/i386/g' \
/usr/share/kernel-package/Control > debian/control
sed -e 's/=V/2.6.19dell1400/g' -e 's/=D/2.6.19dell1400-10.00.Custom/g' \
-e 's/=A/i386/g' -e 's/=M/Unknown Kernel Package Maintainer <[email protected]
-e 's/=ST/linux/g' -e 's/=B/i386/g' \
/usr/share/kernel-package/changelog > debian/changelog
chmod 0644 debian/control debian/changelog
make -f debian/rules debian/stamp/conf/kernel-conf
make[2]: 正在進入目錄 `/home/gdsdj/src/linux-2.6.19'
make[2]: “debian/stamp/conf/kernel-conf”是最新的。
make[2]:正在離開目錄 `/home/gdsdj/src/linux-2.6.19'
make[1]:正在離開目錄 `/home/gdsdj/src/linux-2.6.19'
echo done > debian/stamp/conf/minimal_debian
exec debian/rules APPEND_TO_VERSION=dell1400 INITRD=YES kernel_image kernel-headers
====== making target debian/stamp/conf/vars [new prereqs: ]======
====== making target debian/stamp/build/kernel [new prereqs: vars]======
This is kernel package version 12.036+nmu1.
restore_upstream_debianization
test ! -f scripts/package/builddeb.kpkg-dist || mv -f scripts/package/builddeb.kpkg-dist scripts/package/builddeb
test ! -f scripts/package/Makefile.kpkg-dist || mv -f scripts/package/Makefile.kpkg-dist scripts/package/Makefile
/usr/bin/make EXTRAVERSION=dell1400 ARCH=i386 \
bzImage
make[1]: 正在進入目錄 `/home/gdsdj/src/linux-2.6.19'
CHK include/linux/version.h
CHK include/linux/utsrelease.h
HOSTCC scripts/mod/sumversion.o
下面為錯誤提示,加不上紅字,加了就亂序了,註釋一下把 :
scripts/mod/sumversion.c: 在函式‘get_src_version’中:
scripts/mod/sumversion.c:384:16: 錯誤: ‘PATH_MAX’未宣告(在此函式內第一次使用)
scripts/mod/sumversion.c:384:16: 附註: 每個未宣告的識別符號在其出現的函式內只報告一次
scripts/mod/sumversion.c:384:7: 警告: 未使用的變數‘filelist’ [-Wunused-variable]
make[3]: *** [scripts/mod/sumversion.o] 錯誤 1
make[2]: *** [scripts/mod] 錯誤 2
make[1]: *** [scripts] 錯誤 2
make[1]:正在離開目錄 `/home/gdsdj/src/linux-2.6.19'
make: *** [debian/stamp/build/kernel] 錯誤 2
[email protected]:~/src/linux-2.6.19$
#include <netinet/in.h>
#ifdef __sun__
#include <inttypes.h>
#else
#include <stdint.h>
#endif
#include <ctype.h>
#include <errno.h>
#include <string.h>
#include "modpost.h"
#include <limits.h>
執行sudo gedit scripts/mod/sumversion.c
加入#include <limits.h>後問題解決了 ,又出現了 新的 問題
CC arch/i386/kernel/cpu/rise.o
CC arch/i386/kernel/cpu/nexgen.o
CC arch/i386/kernel/cpu/umc.o
LD arch/i386/kernel/cpu/built-in.o
CC arch/i386/kernel/reboot.o
CC arch/i386/kernel/reboot_fixups.o
CC arch/i386/kernel/module.o
CC arch/i386/kernel/sysenter.o
arch/i386/kernel/sysenter.c: 在函式‘arch_setup_additional_pages’中:
arch/i386/kernel/sysenter.c:158:17: 警告: 取一個型別為‘void’的表示式的地址 [預設啟用]
LDS arch/i386/kernel/vsyscall.lds
AS arch/i386/kernel/vsyscall-int80.o
AS arch/i386/kernel/vsyscall-note.o
SYSCALL arch/i386/kernel/vsyscall-int80.so
gcc: 錯誤: elf_i386:沒有那個檔案或目錄
make[2]: *** [arch/i386/kernel/vsyscall-int80.so] 錯誤 1
make[1]: *** [arch/i386/kernel] 錯誤 2
make[1]:正在離開目錄 `/home/gdsdj/src/linux-2.6.19'
make: *** [debian/stamp/build/kernel] 錯誤 2
執行命令
sudo gedit arch/i386/kernel/Makefile
# The DSO images are built using a special linker script.
quiet_cmd_syscall = SYSCALL [email protected]
cmd_syscall = $(CC) -m elf_i386 -nostdlib $(SYSCFLAGS_$(@F)) \
-Wl,-T,$(filter-out FORCE,$^) -o [email protected]
export CPPFLAGS_vsyscall.lds += -P -C -U$(ARCH)
改紅字部分為-m32問題解決,新的隨之又出現
AR arch/i386/lib/lib.a
GEN .version
CHK include/linux/compile.h
UPD include/linux/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
kernel/built-in.o: In function `mutex_lock':
/home/gdsdj/src/linux-2.6.19/kernel/mutex.c:91: undefined reference to `__mutex_lock_slowpath'
kernel/built-in.o: In function `mutex_unlock':
/home/gdsdj/src/linux-2.6.19/kernel/mutex.c:116: undefined reference to `__mutex_unlock_slowpath'
make[1]: *** [.tmp_vmlinux1] 錯誤 1
make[1]:正在離開目錄 `/home/gdsdj/src/linux-2.6.19'
make: *** [debian/stamp/build/kernel] 錯誤 2
[email protected]:~/src/linux-2.6.19$
這個問題現在還沒解決
* This function is similar to (but not equivalent to) down().
*/
void inline fastcall __sched mutex_lock(struct mutex *lock)
{
might_sleep();
/*
* The locking fastpath is the 1->0 transition from
* 'unlocked' into 'locked' state.
*/
__mutex_fastpath_lock(&lock->count, __mutex_lock_slowpath);
}
EXPORT_SYMBOL(mutex_lock);
static void fastcall noinline __sched
__mutex_unlock_slowpath(atomic_t *lock_count);
/***
~/linux-2.6.19/kernel/mutex.c:91: undefined reference to `__mutex_lock_slowpath'
kernel/built-in.o: In function `mutex_unlock':
~/linux-2.6.19/kernel/mutex.c:116: undefined reference to `__mutex_unlock_slowpath'
make[1]: *** [.tmp_vmlinux1] 錯誤 1
以下是解決辦法:
原文網址:http://blog.csdn.net/lidisha/article/details/7933201
在.config中搜索,發現CONFIG_DEBUG_MUTEXES巨集果然沒有定義。將其改成y,重新編譯
相關推薦
Ubuntu 11 編譯 linux-2.6核心 出錯,給出部分編譯問題解決方暗,新問題求解決
# configuration written to .config # make[2]:正在離開目錄 `/home/gdsdj/src/linux-2.6.19' make EXTRAVERSION=dell1400 ARCH=i386 prepare make[2]
Ubuntu 11 編譯 linux-2.6核心 出錯,給出部分編譯問題解決
# configuration written to .config # make[2]:正在離開目錄 `/home/gdsdj/src/linux-2.6.19' make EXTRAVERSION=dell1400 ARCH=i386 prepare make[2]
初次編譯Linux—2.6.34核心
一、編譯環境:在ubuntu12.04下編譯純核心Linux-2.6.34 二、下載並解壓原始碼 三、構建編譯環境 現在我們得到的只是原始碼,只是許許多多的文字檔案,要想使這些檔案成為可以執行的程式,需要使用編譯器進行編譯以及連結。編譯器有很多,
Linux 2.6核心中新的鎖機制--RCU
一、 引言 眾所周知,為了保護共享資料,需要一些同步機制,如自旋鎖(spinlock),讀寫鎖(rwlock),它們使用起來非常簡單,而且是一種很有效的同步機制,在UNIX系統和Linux系統中得到了廣泛的使用。但是隨著計算機硬體的快速發展,獲得這種鎖的開銷相對於CPU
linux-2.6核心模組引用計數的實現
一、模組使用計數的背景知識 模組是一種可以在核心執行過程中動態載入、解除安裝的核心功能元件。2.6核心中模組的命名方式為*.ko。模組在被使用時,是不允許被解除安裝的。程式設計時需要用“使用計數”來描述模組是否在被使用。 二、2.4核心使用計數的實現方法 2.4核心中
Linux 2.6核心Makefile淺析
從Linux核心2.6開始,Linux核心的編譯採用Kbuild系統,這同過去的編譯系統有很大的不同, 尤其對於Linux核心模組的編譯。在新的系統下,Linux編譯系統會兩次掃描Linux的Makefile:首先編譯系統會讀取Linux核心頂層的 Makefile,然後根據讀到的內容第二次讀取Kbuild
linux 2.6核心的四種IO排程演算法
轉自:http://jackyrong.iteye.com/blog/898938 http://blog.csdn.net/theorytree/article/details/6259104 IO排程器的總體目標是希望讓磁頭能夠總是往一個方向移動,移動到底了再往反方
inotify -- Linux 2.6 核心中的檔案系統變化通知機制
一、 引言 眾所周知,Linux 桌面系統與 MAC 或 Windows 相比有許多不如人意的地方,為了改善這種狀況,開源社群提出使用者態需要核心提供一些機制,以便使用者態能夠及時地得知核心或底層硬體裝置發生了什麼,從而能夠更好地管理裝置,給使用者提供更好的服務,如 hotplug、udev 和 ino
嘗試在ubuntu 14.04上編譯並啟動linux-2.6.32內核
嘗試 編譯 generic gre 生成 sudo tail rect uil 在ubuntu 14.04上編譯並啟動linux-2.6.32內核 [環境]$ cat /etc/issueUbuntu 14.04.5 LTS \n \l $ uname -aLinux Ui
linux-2-6-11核心除錯環境搭建
linux核心除錯環境分為兩部分 1)用bochs除錯彙編 2)用qemu除錯從start_kernel開始的部分 環境說明: 核心版本: 2.6.11 ubuntu: 6.10 qemu: qemu-stable-0.13 busybox: 1.10.4 安裝ubuntu
交叉編譯環境的搭建(Linux-2.6.32核心)
1、建立安裝目錄 #mkdir /usr/local/arm 如果您的PC 端linux 系統已經有這個資料夾,這步就跳過 2、將交叉編譯工具解壓到安裝目錄(注意C是大寫) #tar -xjvf arm-linux-gcc-4.3.2.tar.
linux 2.6下編譯核心啟用iptables及netfilter
最近在配置snat試,開啟iptables總是不成功,原來netfilter的功能在核心編譯時沒有選,所以需要載入netfilter模組,可我是菜鳥根本不會載入模組,只有重新編譯了核心。找了幾篇文章總結如下: 編譯核心時,您可以選擇使用make config、make menuconfig或ma
Linux核心2.6.34.14新增系統呼叫及編譯方法(CentOS-6.4-x86_64)
<?xml version="1.0" encoding="UTF-8"?> //我新增系統呼叫步驟,僅供參考,尤其是系統呼叫的實現部分,建議大家自己寫,除了我這種好像還可以用sys_open系列來寫 #define 核心版本 linux-2.6.34.14
mini2440 官方linux-2.6內核文件zImage編譯
clas pdf rdp slb 重新編譯 int ron 最新 active 官方linux-2.6內核文件zImage編譯 by HYH | 2018 年 1 月 1 日 下午 5:34 一.說明 1.編譯linux內核需要make和arm的交叉編譯工具鏈(gcc),
在ubuntu上編譯 wpa_supplicant-2.6
wifi wlan 1.1 libnl-3.4.0./configure --prefix=/home/fnie/wpa/out/libnl --disable-static makemake checkmake install// to install the API documentation:m
Apache spark2.1.0編譯hadoop-2.6-cdh5.11.2的對應版本
Apache spark2.1.0 編譯 hadoop-2.6-cdh5.11.2 的對應版本 搞了兩天,終於把spark編譯成功了,把編譯過程記錄一下 編譯失敗的坑: 1)linux記憶體不足,maven編譯過程中記憶體溢位 2)找不到cloudera倉庫 3)報各種錯誤 考慮到ma
linux 2.6.24.4在S3C2410上的移植(核心配置)(基於GEC2410)
移植完u-boot後,接下來就是linux核心了.以下記錄我移植的步驟,如有問題,歡迎指正.1.下載linux kernel原始碼到http://www.kernel.org/下載linux核心原始碼,這裡我們使用2.6.24.4的核心.解壓linux-2.6.24.4.ta
基於linux-2.6.38.8核心的wifi驅動分析
//參考給一些前輩們的文章 1、sdio介面層解析 SDIO匯流排 SDIO匯流排和USB匯流排類似,SDIO也有兩端,其中一端是HOST端,另一端是device端。所有的通訊都是由HOST端傳送命令開始的,Device端只要能解析命令,就可以相互通訊
linux-2.6.21核心中建立jffs2檔案系統(mtd分割槽的使用)
本文主要介紹如何在AT91SAM9261EK板子上製作和使用jffs2檔案系統,使用的是linux-2.6.21核心。 首先配置MTD $ make menuconfig 進入 Memory Technology Devices (MTD)
交叉編譯基於ARM架構的linux-3.6核心遇到的問題及解決方法
編譯linux-3.6核心: 安裝交叉編譯工具:arm-linux-gnueabi-gcc 下載並解壓linux-3.6原始碼 清楚原始碼中的無用的編譯檔案:makeclean清除除了config之外的所有編譯出來的文件,makemrproper將配置的config也一併清