linux編譯報錯
找不到庫的路徑,或者你的include的路徑不正確,請檢查下你的配置的include路徑是否包含有你的include文件。
還有注意編譯時:
cc -o test test.c 【libmysqlclient.a】 -g ...
要寫上這個庫...
或
gcc -o test -L/usr/lib/mysql -lmysqlclient test.c
Ⅱ 編譯在X86平台下運行的linux內核出錯 make: Warning: File `.config' has modification time 6.5e+02 s in
出現這種錯誤有可能是因為工程在別的電腦上一直到當前的電腦上,進行編譯出現的。主要是因為兩個環境的時間不對應。
原因:window的時間和虛擬機上的時間有差異。
解決:修改虛擬機上的時間。
指令1:sudo date -s 02/19/2021 //月、日、年
指令2:sudo date -s 14:46:00 //時、分、秒
Ⅲ Linux內核編譯出錯。
你的編譯環境有問題。
as 提示不支持某個參數,而且從上面看你應該在編譯 arm 架構的內核,但後面的提示是 as 命令,這種名字的命令(沒有架構前綴)應該是本地編譯器。我想你不太可能在 arm 上本地編譯內核吧(實際上確實可以,而且我以前玩 arm 也都傾向於 arm 上本地編譯,就是速度慢,需要用 distcc 加速,但兼容好)?
貌似是 -EL 參數 ix86 架構不支持。所以不太可能這步就是應該用本地 as 編譯。
如果不是 arm 本地編譯,那有可能這步用錯了 as 這個匯編器命令。你的台式計算機 as 是 x86 或者 amd64 的,肯定不支持 arm 特有的編譯參數和代碼。
你看看你的編譯文章吧。可能有錯,不符合現在內核編譯的規范了。或者 GCC 版本太老或者太新不支持這個參數。不排除你的交叉編譯環境有問題。
別聽那匿名胡扯的,內核源代碼根本沒有 configure 。
Ⅳ Linux 0.11內核編譯錯誤記錄
現象1: 提示gas gld 比識別
措施: gnu編譯器發展到後來,越來越流行,更多使用別名為 as ld gcc等.
現象2: 提示位元組對齊需要是 2的倍數
措施: 具體解決方法: 利用命令 sed -i 's/align 2/align 4/g' filename 替換align 2 為 align 4(align 3 替換為 align 8)
sed -i 's/align 2/align 4/g' boot/head.s
sed -i 's/align 3/align 8/g' boot/head.s
現象3: -fcombine-regs -mstring-insns選項不識別
措施: 此兩個選項已經過時,直接去掉即可
現象4: warning 特別多
措施: 將-Wall 替換為 -w
現象5: __stack_chk_fail 未定義
措施: 去網上搜了一下,在Makefile中的$(CFLAGS)後面加上-fno-stack-protector,即不需要棧保護
現象6: main.c 中_syscall0重復定義
措施: main.c static inline _syscall0(int, fork) 去掉static即可
現象7: 提示內嵌匯編不符合語法限制
措施: 類似的問題在後面編譯中出現好多,C內嵌匯編的格式 asm (匯編語句:輸入寄存器:輸出寄存器:可能被修改的寄存器),最新的GCC規定 輸入或輸出寄存器不能出現在可能被修改的寄存器中,目前看到網上的方法是把所有類似問題的可能被修改的寄存器全部刪掉 解決方案:find -type f -exec sed -i 's/:"w{2}"(,"w{2}") )/:) /g' {} ; 其中's/:"w{2}"(,"w{2}") /:/g'
現象8: 在 control.c 中清楚定義了 static unsigned char attr = 0x70 ,而在鏈接 control.o 時,卻爆出 attr未定義。
措施: 用 nm -C control.o 查看其符號,發現attr確實處於未定義狀態。故單獨編譯一個小程序定義靜態變數,查看其 .o 文件中,發現靜態變數定義正常。故考慮為編譯選項差異導致,最終發現因為 -O 編譯優化選項導致,目前處理方式是去掉該選項。
現象9: build.c:(.text+0xde): undefined reference to `MAJOR'
措施: 通過分析編譯列印信息,發現編譯時沒有加入頭文件路徑 -Iinclude
現象10: fs/fs.o: In function check_disk_change':(.text+0x1b2f): undefined reference to invalidate_buffers'
措施: 查找發現此函數定義在buffer.c 中,且為內聯函數, 故嘗試將其更改為普通函數, 然後編譯通過.
現象11: 編譯 build.c 時報錯:/usr/include/i386-linux -gnu/bits/stdio2.h:57:8: error: unknown type name 『__gnuc_va_list』
措施: 分析發現時此系列錯誤均由 -Iinclude 選項導致, 而該選項在 想像9 中加入, 故考慮去掉該選項, 直接在build.c 中加入 MAJOR 宏定義.