- uClibc Web site : http://uclibc.org/toolchains.html
- http://linux.derkeiler.com/Mailing-Lists/Kernel/2009-03/msg04460.html
- http://www.crifan.com/make_uimage_error_conflicting_types_for_getline_stdio_h_previously_declaration_was_here/
- https://bugzilla.redhat.com/show_bug.cgi?id=493941
步驟:
1. 在uClibc官網中(http://uclibc.org/toolchains.html)有簡易的說明如何此用 Buildroot 來產生 uClibc 的 toolchains.
2. 下載 Buildroot,然後修改設定檔:(run 'make menuconfig')
- Target Architecture (ARM (little endian))
- Target Architecture Variant (arm926t)
- Target ABI (EABI)
- Toolchain --->
- Kernel Headers (Linux 2.6 (manually specified version))
- (2.6.28) linux version
- Filesystem images ==> 全部取消
問題修正:
- 當在build 到 output/toolchain/linux-2.6.28 kernal時會出現以下的錯誤。
scripts/unifdef.c:209: error: conflicting types for 'getline'
/usr/include/stdio.h:653: note: previous declaration of 'getline' was here
make[2]: *** [scripts/unifdef] Error 1
make[1]: *** [__headers] Error 2
make[1]: Leaving directory `/home/ken/WrkSrc/test1/Grain/grain/test_tmp/buildroot- 2012.11.1/output/toolchain/linux-2.6.28'
make: *** [/home/ken/WrkSrc/test1/Grain/grain/test_tmp/buildroot-2012.11.1/output/toolchain/linux/.configured] Error 2
在網路上搜尋到有兩種解決方式(請看參考來源),一種是直接修改 "scripts/unifdef.c",將"getline"函式直接修改成其他的名字(例:parseline);另外一種是在 CFLAGS 中加入 "-D_POSIX_C_SOURCE=200112L"。
※ 若是採用第一種方式,每次當 buildroot run 'make clean' 後,就必須再修改一次。(至於第二種不知道加在哪,所以沒試)
此外網路上也有說明這問題已經在2009/04已經修正。
- 安裝額外的lib (prec)時,發生需要支援 large file support.
- Toolchain --->
- [*] Enable large file (files > 2 GB) support
沒有留言:
張貼留言