glibc 编译(转载)
0x01 下载源码
0x02 指定安装与源码存放的位置
1 2 3 4
| # 如安装在 /usr/local/glibc/glibc2.23 # 源码存放 /home/thonsun/Desktop/glibc/glibc-2.23/
|
0x03 新建build文件夹
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| # 在下载源码的文件夹解压进入源码 cd build文件夹 ### x64的编译配置 CFLAGS="-g -g3 -ggdb -gdwarf-4 -Og" CXXFLAGS="-g -g3 -ggdb -gdwarf-4 -Og" ../configure --prefix=/path/to/install # ../configure --prefix=/usr/local/glibc/glibc2.23 我的配置 mkdir build # 要在新的空的文件夹进行configure配置,存放makefile文件 # configure编译时提示:configure: error: you must configure in a separate build directory ### x32的编译配置 # 在前面的已经生成64位的情况下,再同保留两个版本的要新建一个build32/,和安装文件夹x32/ # /usr/local/glibc/glibc2.23/x32 # /home/thonsun/Desktop/glibc/glibc-2.23/bulid32 ###!!!!! 32位下的编译要一起执行 !!!! CC="gcc -m32" CXX="g++ -m32" \ CFLAGS="-g -g3 -ggdb -gdwarf-4 -Og -Wno-error" \ CXXFLAGS="-g -g3 -ggdb -gdwarf-4 -Og" \ ../configure --prefix=/usr/local/glibc/glibc2.23/x32 --host=i686-linux-gnu #### 切换到root su make && make install
|
0x04修改加载#TODO:list1
1 2 3 4
| export LD_LIBRARY_PATH=/usr/local/glibc2121/xxx export LD_LIBRARY_PATH=`pwd` export LD_PRELOAD=你的libc 最后不用了在:unset LD_PRELOAD
|
(可选loader)
1 2 3 4 5 6 7 8 9 10 11
| # ubuntu16.04的更新源 https://blog.csdn.net/lym152898/article/details/79100507 # 安装pathelf sudo apt-get install patchelf # pathelf使用 https://nixos.org/patchelf.html # 修改要调试的程序 # x64 patchelf --set-interpreter /usr/local/glibc/glibc2.23/lib/ld-linux-x86-64.so.2 --set-rpath /usr/local/glibc/glibc2.23/lib/ double_free # x32 patchelf --set-interpreter /usr/local/glibc/glibc2.23/x32/lib/ld-linux.so.2 --set-rpath /usr/local/glibc/glibc2.23/x32/lib/ double_free32 # 注:ld-linux-x86-64.so.2为一个编译生成的lib库中的loader的ld-so.2的连接文件,会默认加载当前的libc
|
未注意问题
在配置如下环境变量的时候,没有将如下环境变量一次写入,而是分行写入的,导致在进行动态调试的时候,不能看到宏定义相关的符号,将如下变量一行写入即可解决该问题
1 2 3
| CC="gcc -m32" CXX="g++ -m32" \ CFLAGS="-g -g3 -ggdb -gdwarf-4 -Og -Wno-error" \ CXXFLAGS="-g -g3 -ggdb -gdwarf-4 -Og" \
|
注
文章主要copy于thonsun 师傅的文章,仅用作参考学习,记录 !!!
https://thonsun.github.io/2019/07/15/%E8%87%AA%E9%80%89%E6%8B%A9glibc%E5%B8%A6%E7%AC%A6%E5%8F%B7%E7%89%88%E6%9C%AC%E8%B0%83%E8%AF%95/
可参考
1 2 3 4 5 6
| http://look3little.blogspot.com/2017/12/debug-symbolglibc.html https://bbs.pediy.com/thread-225849.htm http://brieflyx.me/2018/linux-tools/handling-so-hell/ https://www.cnblogs.com/xingzherufeng/p/9682660.html https://0xffff.one/d/337 有详细介绍 https://bbs.pediy.com/thread-254868.htm
|