• 读者文摘
  • 美文摘抄
  • 短文摘抄
  • 日记大全
  • 散文精选
  • 感恩亲情
  • 人生感悟
  • 智慧人生
  • 感悟爱情
  • 心灵鸡汤
  • 实用文档
  • 名人名言
  • 伤感文章
  • 当前位置: 蜗牛文摘网 > 读者文摘 > 根目录冲突(ld-linux.so位置)解决方法有哪些_ld linux.so.2

    根目录冲突(ld-linux.so位置)解决方法有哪些_ld linux.so.2

    时间:2020-02-14 08:30:10 来源:千叶帆 本文已影响

      根目录冲突(ld-linux.so位置)解决方法

      解决方法一:不追求标准

      启动方法一

      把上例中/mylinux文件夹放到分区中,在分区中新建linux结构,把启动时用的文件外面做指向/mylinux中对应文件的链接,如mount等命令和/sbin/init程序等。在lfs中制作目标系统时会chroot进/mnt/lfs文件夹中,这之前为chroot做的工作和我要说的是类似的,不懂的可以看看。

      启动方法二

      也可以把/mylinux的内容放到分区中,然后做一个链接/mylinux/lib/ ld-linux.so.2链接到/lib/ld-linux.so.2。

      上面的方法都是为保持链接器的正确位置,但这就不是标准linux了。

      解决方法二:临时工具链

      这种方法的思想是做一个根不是/的linux系统,再用这个系统制作标准的linux系统,这样就不会有根冲突问题了。

      根不/的linux系统是怎么做的呢?其实就是上面说的/mylinux中的系统,在lfs中的/tools中的系统。

      上面解决方法一中可知,根不是/的linux系统是可以启动的,用解决方法一中的启动方法一启动系统,再用这个系统制作linux就可以占用根目录/了。因为启动的系统在目录/mylinux中(LFS中为/tools)。这样制作的linux就是标准结构了。

      解决方法三:sysroot

      根冲突的问题还可以理解为gcc和binutils的搜索路径和编译程序的根路径的冲突问题。第一步编译好目标系统的C库(一般为glibc)后,再编译程序就要用刚编译好的目标系统的C库了。也就是在编译时要搜索刚编译好的目标系统的C库。但这样编译出的程序的中路径就不是相对于根目录/的了。

      如果我们能单指定gcc和binutils的搜索路径,不改变编译设置,这样问题不用解决了吗?

      这种功能可以通过sysroot设定,在编译gcc和binutils时在configure的参数中加入--with-sysroot=<制作linux的根文件夹>,可以设置搜索路径,使编译过程中用的是指定的C库,而编译出的程序确是相对于根目录/的。

      这样编译出的linux中的程序的链接器ld-linux.so.X的路径就正确了。这样就可以把制作的linux直接移到分区中启动了。

      这是借鉴CLFS sysroot也可以叫CLFS3.0中的方法。

      这种方法的好处是只要做好交叉编译的gcc和binutils就可以了,利用源系统中的辅助工具进行编译。用sysroot一般是在交叉编译中,同平台的本地编译是交叉编译的一个子集,可以用在交叉编译中的方法也可以用在本地编译中。

    相关热词搜索:Linux教程根目录冲突(ld-linux so位置)解决方法有哪些ld-linux so 2lib ld linux so 2

    • 名人名言
    • 伤感文章
    • 短文摘抄
    • 散文
    • 亲情
    • 感悟
    • 心灵鸡汤