设备驱动程序编程-Linux2.6.10-kdb安装

文章目录

kdb patch

下载

复制代码
https://git.kernel.org/pub/scm/linux/kernel/git/danielt/linux.git/
https://lkml.org/

https://ftp.jaist.ac.jp/pub/Linux/Momonga/2/SOURCES/

解压

复制代码
    bzip2  -d  kdb-v4.4-2.6.10-common-1.bz2 
    bzip2  -d  kdb-v4.4-2.6.10-i386-1.bz2 

patch

复制代码
patch -p1 < kdb-v4.4-2.6.10-common-1 
patch -p1 < kdb-v4.4-2.6.10-i386-1
config
复制代码
[root@localhost linux-2.6.10]#uname -m
x86_64
[root@localhost linux-2.6.10]#

1. 设置正确的架构并重新配置
bash
# 设置正确的架构
export ARCH=i386

# 清理配置并重新开始
rm -f .config
make mrproper

make ARCH=i386 defconfig \
    HOSTCC="/opt/gcc-3.4.6/bin/gcc -m32 -B/opt/gcc-3.4.6/bin/ -L/opt/gcc-3.4.6/lib" \
    HOSTLD="/opt/gcc-3.4.6/bin/ld" \
    HOSTCFLAGS="-m32 -static" \
    HOSTLDFLAGS="-m32 -static"
2. 启用必要的依赖选项
bash
# 确保这些基础选项都启用
echo "CONFIG_DEBUG_KERNEL=y" >> .config
echo "CONFIG_DEBUG_INFO=y" >> .config
echo "CONFIG_MAGIC_SYSRQ=y" >> .config
echo "CONFIG_KALLSYMS=y" >> .config
echo "CONFIG_KALLSYMS_ALL=y" >> .config
3. 启用 KDB 选项
bash
# 启用 KDB
echo "CONFIG_KDB=y" >> .config
echo "CONFIG_KDB_MODULES=y" >> .config
echo "CONFIG_KDB_OFF=y" >> .config
4. 更新配置
bash
# 更新配置,在提示时,对于新选项直接按回车使用默认值
make ARCH=i386 oldconfig \
    HOSTCC="/opt/gcc-3.4.6/bin/gcc -m32 -B/opt/gcc-3.4.6/bin/ -L/opt/gcc-3.4.6/lib" \
    HOSTLD="/opt/gcc-3.4.6/bin/ld" \
    HOSTCFLAGS="-m32 -static" \
    HOSTLDFLAGS="-m32 -static"


检查
 grep -i "kdb" .config
复制代码
echo "CONFIG_FUSION=y" >> .config
echo "CONFIG_FUSION_SPI=y" >> .config
echo "CONFIG_FUSION_FC=y" >> .config
echo "CONFIG_FUSION_SAS=y" >> .config
echo "CONFIG_HIGHMEM64G=y" >> .config
# 解决 896MB 内存限制


bash
# 创建环境变量设置脚本
cat > /opt/gcc-3.4.6/setenv.sh << 'EOF'
#!/bin/bash
export OLD_TOOLCHAIN_PATH=/opt/gcc-3.4.6
export PATH=$OLD_TOOLCHAIN_PATH/bin:$PATH

# 强制32位编译工具链
export CC="$OLD_TOOLCHAIN_PATH/bin/gcc -m32"
export CXX="$OLD_TOOLCHAIN_PATH/bin/g++ -m32"
export LD="$OLD_TOOLCHAIN_PATH/bin/ld"
export AS="$OLD_TOOLCHAIN_PATH/bin/as --32"
export AR="$OLD_TOOLCHAIN_PATH/bin/ar"
export NM="$OLD_TOOLCHAIN_PATH/bin/nm"
export RANLIB="$OLD_TOOLCHAIN_PATH/bin/ranlib"
export STRIP="$OLD_TOOLCHAIN_PATH/bin/strip"

# 库和头文件路径
export LIBRARY_PATH=$OLD_TOOLCHAIN_PATH/lib:$LIBRARY_PATH
export C_INCLUDE_PATH=$OLD_TOOLCHAIN_PATH/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=$OLD_TOOLCHAIN_PATH/include:$CPLUS_INCLUDE_PATH

# 内核编译专用变量
export ARCH=i386
export CROSS_COMPILE=""
export KBUILD_CFLAGS="-m32 -march=i386 -mtune=i386"

# 主机工具链(用于编译host程序)
export HOSTCC="$OLD_TOOLCHAIN_PATH/bin/gcc -m32"
export HOSTCXX="$OLD_TOOLCHAIN_PATH/bin/g++ -m32"
export HOSTLD="$OLD_TOOLCHAIN_PATH/bin/ld"
export HOSTCFLAGS="-m32 -static"
export HOSTLDFLAGS="-m32 -static"

echo "Old toolchain (GCC 3.4.6) 32-bit environment activated!"
EOF

# 使脚本可执行
chmod +x /opt/gcc-3.4.6/setenv.sh

# 激活旧工具链环境
source /opt/gcc-3.4.6/setenv.sh
创建恢复脚本
bash
# 创建恢复脚本
cat > /opt/gcc-3.4.6/unsetenv.sh << 'EOF'
#!/bin/bash
# 从PATH中移除旧工具链
export PATH=$(echo $PATH | sed "s|/opt/gcc-3.4.6/bin:||")

# 清除所有相关环境变量
unset OLD_TOOLCHAIN_PATH
unset CC
unset CXX
unset LD
unset AS
unset AR
unset NM
unset RANLIB
unset STRIP
unset LIBRARY_PATH
unset C_INCLUDE_PATH
unset CPLUS_INCLUDE_PATH
unset ARCH
unset CROSS_COMPILE
unset KBUILD_CFLAGS
unset HOSTCC
unset HOSTCXX
unset HOSTLD
unset HOSTCFLAGS
unset HOSTLDFLAGS

echo "Old toolchain environment deactivated!"
EOF

chmod +x /opt/gcc-3.4.6/unsetenv.sh
build
复制代码
make ARCH=i386 -j2 \
    HOSTCC="/opt/gcc-3.4.6/bin/gcc -m32" \
    HOSTLD="/opt/gcc-3.4.6/bin/ld" \
    HOSTCFLAGS="-m32 -static" \
    HOSTLDFLAGS="-m32 -static" \
    CC="/opt/gcc-3.4.6/bin/gcc -m32" \
    LD="/opt/gcc-3.4.6/bin/ld" \
    CROSS_COMPILE="" \
    KBUILD_CFLAGS="-m32 -march=i386 -mtune=generic"
复制代码
[root@localhost linux-2.6.10]#make ARCH=i386 modules_install \
>     INSTALL_MOD_PATH=/lib/modules/2.6.10-kdb \
>     CC="/opt/gcc-3.4.6/bin/gcc -m32" \
>     LD="/opt/gcc-3.4.6/bin/ld"
[root@localhost linux-2.6.10]#make ARCH=i386 install \
>     CC="/opt/gcc-3.4.6/bin/gcc -m32" \
>     LD="/opt/gcc-3.4.6/bin/ld"
相关推荐
淮北也生橘124 天前
Linux驱动知识点:容器嵌入机制(Container Embedding)
linux驱动·嵌入式linux
yan123685 个月前
Linux 驱动之设备树
android·linux·驱动开发·linux驱动
liuluyang5307 个月前
linux sysfs的使用
linux驱动·sysfs
m0_747124539 个月前
基于 IMX6ULL 的环境监测自主调控系统
linux驱动
m0_747124539 个月前
Linux 驱动入门(5)—— DHT11(温湿度传感器)驱动
linux·linux驱动
御风_211 年前
Linux——字符设备驱动控制LED
linux·ubuntu·linux驱动
臻一1 年前
Rockchip-linux驱动 --- IIC
iic·linux驱动
pq113_61 年前
ftdi_sio应用学习笔记 4 - I2C
笔记·学习·linux驱动·ftdi_sio
嵌入式成长家1 年前
[linux 驱动]i2c总线设备驱动详解与实战
linux驱动·i2c驱动·i2c总线·i2c设备