MT6572 在 Ubuntu 12.04 下編譯問題
时间:10-02
整理:3721RD
点击:
弄了好久才找到問題在哪. 在tools/NVRAMStatistic/src下分別有兩個檔案, nvram_auto_gen.c 跟 nvram_gen_util.c有include io.h這個檔案
#include <io.h>
不過實際上這個檔案是放在/usr/include/sys底下的, 所以改成
#include <sys/io.h>
這樣ubuntu 12.04 編譯就會過了. 但是這又有個問題, ubuntu 10.04 io.h這個檔案一樣是放在/usr/include/sys底下, 再往上追發現其實還有個compile option包起來
#ifndef NVRAM_NOT_PRESENT
追查後發現, 在ubuntu上compiler認為NVRAM_NOT_PRESENT是沒define的, 所以被這個compile option包起來的code都會跑到, 也是io.h找不到的原因
但是ubuntu 10.04上卻認為這個compile option是有define的, 所以不會有找不到io.h的錯誤.
問題來了, 在ubuntu10.04的編譯環境下, 翻遍info.log跟infomak.log這兩個檔案我都找不到有定義NVRAM_NOT_PRESENT, 反而是有定義 __MOD_NVRAM__
而在Modem.mak這個定義檔中這兩個compile option其實是互斥的, 也就是說定義了 __MOD_NVRAM__ 就不可能定義NVRAM_NOT_PRESENT
那麼ubuntu 10.04下那個io.h的狀況到底是怎麼回事呢? 我實在沒頭緒, 希望有前輩可以指點一二.
#include <io.h>
不過實際上這個檔案是放在/usr/include/sys底下的, 所以改成
#include <sys/io.h>
這樣ubuntu 12.04 編譯就會過了. 但是這又有個問題, ubuntu 10.04 io.h這個檔案一樣是放在/usr/include/sys底下, 再往上追發現其實還有個compile option包起來
#ifndef NVRAM_NOT_PRESENT
追查後發現, 在ubuntu上compiler認為NVRAM_NOT_PRESENT是沒define的, 所以被這個compile option包起來的code都會跑到, 也是io.h找不到的原因
但是ubuntu 10.04上卻認為這個compile option是有define的, 所以不會有找不到io.h的錯誤.
問題來了, 在ubuntu10.04的編譯環境下, 翻遍info.log跟infomak.log這兩個檔案我都找不到有定義NVRAM_NOT_PRESENT, 反而是有定義 __MOD_NVRAM__
而在Modem.mak這個定義檔中這兩個compile option其實是互斥的, 也就是說定義了 __MOD_NVRAM__ 就不可能定義NVRAM_NOT_PRESENT
那麼ubuntu 10.04下那個io.h的狀況到底是怎麼回事呢? 我實在沒頭緒, 希望有前輩可以指點一二.
我以前也用UBUNTU1204的,编译的时候问题还不止你那么多,后面直接用1210版本就没有问题了,还有很多GCC相关联的问题,建议你实在不行,另外装个版本吧,或者升级
其實我現在的疑問反而是那個nvram_autogen在ubuntu 10.04跟12.04底下行為不一致的狀況, 真的很怪.
兄弟 现在能不能编译过 ?
我是来学习的·