请帮忙看下uclibc工具链的问题
时间:2008-10-15
来源:互联网
tar jxf gcc-3.4.6.tar.bz2
tar jxf binutils-2.18.tar.bz2
tar jxf uClibc-0.9.28.tar.bz2
编译过程:
cd /data/binutils-2.18/
./configure --target=i686-linux --prefix=/opt/i686 --disable-nls
make && make install && echo "succ----"
cd /data/gcc-3.4.6/
export PATH=/opt/i686/bin:$PATH
./configure --target=i686-linux --prefix=/opt/i686 --disable-nls --enable-languages=c --without-headers --with-newlib
make && make install && echo "succ----"
编译uclibc,略
mkdir /data/gcc-final
cd /data/gcc-final/
tar jxf /data/gcc-3.4.6.tar.bz2
cd /data/gcc-final/gcc-3.4.6/
./configure --target=i686-linux --prefix=/opt/i686 --disable-nls --enable-languages=c --disable-__cxa_atexit
make && make install && echo "succ----"
工具链测试:
[root@server /opt/i6863]# i686-linux-gcc hello.c -o hello -v
Reading specs from /opt/i6863/lib/gcc/i686-linux/3.4.6/specs
Configured with: ./configure --target=i686-linux --prefix=/opt/i6863 --enable-languages=c --disable-__cxa_atexit --disable-nls
Thread model: posix
gcc version 3.4.6
/opt/i6863/libexec/gcc/i686-linux/3.4.6/cc1 -quiet -v hello.c -quiet -dumpbase hello.c -mtune=pentiumpro -auxbase hello -version -o /tmp/cckW7LMM.s
ignoring nonexistent directory "/opt/i6863/lib/gcc/i686-linux/3.4.6/../../../../i686-linux/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/opt/i6863/include
/opt/i6863/lib/gcc/i686-linux/3.4.6/include
/usr/include
End of search list.
GNU C version 3.4.6 (i686-linux)
compiled by GNU C version 3.2.2 20030222 (Red Hat Linux 3.2.2-5).
GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=64003
/opt/i6863/lib/gcc/i686-linux/3.4.6/../../../../i686-linux/bin/as -V -Qy -o /tmp/ccAHJncu.o /tmp/cckW7LMM.s
GNU assembler version 2.18 (i686-linux) using BFD version (GNU Binutils) 2.18
/opt/i6863/libexec/gcc/i686-linux/3.4.6/collect2 --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o hello /opt/i6863/lib/gcc/i686-linux/3.4.6/../../../crt1.o /opt/i6863/lib/gcc/i686-linux/3.4.6/../../../crti.o /opt/i6863/lib/gcc/i686-linux/3.4.6/crtbegin.o -L/opt/i6863/lib/gcc/i686-linux/3.4.6 -L/opt/i6863/lib/gcc/i686-linux/3.4.6/../../../../i686-linux/lib -L/opt/i6863/lib/gcc/i686-linux/3.4.6/../../.. /tmp/ccAHJncu.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /opt/i6863/lib/gcc/i686-linux/3.4.6/crtend.o /opt/i6863/lib/gcc/i686-linux/3.4.6/../../../crtn.o
[root@server /opt/i6863]# ls /opt/i6863/i686-linux/
问题1, 上面的链接过程中搜寻头文件有2个多于的" /usr/local/include" 和 " /usr/include" , 怎样去掉呢?
问题2, 链接过程中-dynamic-linker /lib/ld-linux.so.2这个好像不正确, 该怎么修改呢
谢谢
作者: jinglexy 发布时间: 2008-10-15
问题1还未解决, 现在头文件搜索顺序是:
/usr/local/include
/opt/i6863/include
/opt/i6863/lib/gcc/i686-linux/3.4.6/include
/usr/include
怎么把我/usr/local/include放到后面去?
作者: jinglexy 发布时间: 2008-10-15
http://www.linuxfromscratch.org/hlfs/view/unstable/
如果结合一下 CLFS-Sysroot 使用 --sysroot 会更简单一些,那样就不需要调整spec。
没具体做过uclibc的工具链,这个仅供参考。
调整头文件搜索顺序,可在gcc命令行添加-nostdinc -isystem /yourpath1 -isystem /yourpath2 -isystem /yourpath3 ...
楼主是不是在做 GNU/JINIX?
作者: 聚焦深空 发布时间: 2008-10-16
gcc -I这个也可以, 但是编译象busybox的时候如果用的本地的include有时会出现错误,
lfs中gcc4有个禁止本地include目录的patch:
./gcc-3.4.6/gcc/config/linux.h最后面加上
#undef STANDARD_INCLUDE_DIR
#define STANDARD_INCLUDE_DIR 0
正在测试这个,稍后会贴出结果
jinix 在6月份之后就没怎么写了,一个人实在坚持不下来,正在把kernel改成linux-2.6了,
可能以后还会继续做吧。
鼠头蛇尾的,瀑布汗
作者: jinglexy 发布时间: 2008-10-16
作者: albcamus 发布时间: 2008-10-16
还是这个问题, 下面两种都可以解决:
(1)export C_INCLUDE_PATH=/opt/i686/include
(2)CFLAGS = -nostdinc -I/opt/i686/include , 这个每次都要改makefile
因为是做toolchain, 所以希望是个完整简单的环境:
希望的是在specs中改, 尝试了:
%{I*}
改成
%{I*:-I/opt/i686/include -I%*}
gcc hello.c -v
还是不行?
作者: jinglexy 发布时间: 2008-10-16
我现在想做个Linux内核的中文版配置菜单,但是搞不清楚make menuconfig的东西是怎么出来的,楼主能指导一下吗?
作者: ti8er 发布时间: 2008-10-16
作者: jinglexy
多谢深空老大:)
gcc -I这个也可以, 但是编译象busybox的时候如果用的本地的include有时会出现错误, lfs中gcc4有个禁止本地include目录的patch: ./gcc-3.4.6/gcc/config/linux.h最后面加上 #undef STANDARD_INCLUDE_DIR #define STANDARD_INCLUDE_DIR 0 正在测试这个,稍后会贴出结果 jinix 在6月份之后就没怎么写了,一个人实在坚持不下来,正在把kernel改成linux-2.6了, 可能以后还会继续做吧。 鼠头蛇尾的,瀑布汗 |
-I参数和我上面提到的方式有区别的,具体请参考man gcc。
建议还是参考上面提到的 HLFS 文档构建工具链,或参考其他人的工具链构建脚本做。
有时间会研究研究您的 jinix。
作者: 聚焦深空 发布时间: 2008-10-17
作者: jinglexy
thanks,
还是这个问题, 下面两种都可以解决: (1)export C_INCLUDE_PATH=/opt/i686/include (2)CFLAGS = -nostdinc -I/opt/i686/include , 这个每次都要改makefile 因为是做toolchain, 所以希望是个完整简单的环境: 希望的是在specs中改, 尝试了: %{I*} 改成 %{I*:-I/opt/i686/include -I%*} gcc hello.c -v 还是不行? |
作者: 聚焦深空 发布时间: 2008-10-17
作者: youbest 发布时间: 2008-10-19
menuconfig是./linux-2.x.x/scripts目录中的程序实现的, 只是用过, 没看过; 网上有个menuconfig各个条目的翻译, 看这个就可以了, 没必要做成中文啊
re 聚焦深空:
gcc-3.4.6/gcc/c-incpath.c的add_standard_paths()可以强行过滤这2个目录,
不过去和不去也没什么关系, 测试busybox编译都没问题
re youbest:
jinix1: hobby os,
jinix2: 仿照linux的c++内核, 调度, 文件系统, 内存管理, 体系架构, 驱动架构等基本上完成,
已经停止.
jinix3: linux的轻量级发行版,采用linux-2.6.27,busybox-1.10.0,uclibc-0.9.29等等,用来学习os用的,http://jinix.sf.net
谢谢各位
作者: jinglexy 发布时间: 2008-10-20
作者: ti8er 发布时间: 2008-10-20
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28