我正在为embedded式设备交叉编译3.4.0内核。 然后我想安装需要/lib/modules/3.4/build目录和子文件的compat-wireless驱动程序。 任何人都可以解释如何build立该目录,以便当我做INSTALL_MOD_PATH=newmodules make modules_install它会加载/lib/modules/$(uname -r)/build目录以及? 我希望能有一个清楚的解释。
我正在使用debian发行版。 我知道我可以通过apt-get install linux-headers-$(uname -r)来安装内核头文件,但是我怀疑这会是一个好主意,因为内核源代码可能不完全相同。
是否有可能在Linux上使用C ++与CMake创buildWindows exe文件?
Qt程序没有文本,我没有字体错误
debugging交叉编译的代码:Linux-> Windows
mips交叉编译器中的crt1.o错误
embedded式linux上的getrusagefunction
通常,/ lib / modules / $(uname -r)/ build是执行构建的目录的软链接。 所以这样做的方法是简单地做一个
make modules_install INSTALL_MOD_PATH=/some/root/
在内核的build目录中,/ some / root是你想要交叉编译的部分。 这将在/ some / root / lib / modules / $(uname -r)中创建一个到你的内核构建路径的链接…验证。
现在,当你编译compat_wireless驱动程序时,使用KLIB_BUILD变量将Makefile中的内核构建目录指定为/ some / root(读取Makefile)
make modules KLIB_BUILD=/some/root/lib/modules/$(uname -r)/build
这应该为你做的伎俩。
编辑A
在回答你的评论如下:
将“newmodules”保留在内核目录之外,把它放在内核目录中是一个坏主意。 所以mkdir newmodules就像/ home / foo或/ tmp之类的地方。 这是你的构建链接被搞砸的原因之一
ALSO … / build是软链接/内核/构建/位置,它只能作为软链接复制。 您还需要使用相同的相对位置将实际的内核源代码/内核构建目录复制到您的microSD。 例如,
假设你的内核源代码在:
/usr/src/linux-3.5.0/
你的内核构建目录是:
/usr/src/linux-3.5.0-build/
你的newmodules(在1.之后)在:
/tmp/newmodules/
所以在/ tmp / newmodules /下你可以看到安装在树中的模块,如:
lib/modules/$(uname -r)/
当你在这个目录下做一个ls -al时,你会看到build是一个软链接:
build -> /usr/src/linux-3.5.0-build/
现在让我们说你的microSD挂载在/ mnt / microSD下
那么你需要做到以下几点
mkdir -p /mnt/microSD/usr/src cp -a /usr/src/linux-3.5.0 /usr/src/linux-3.5.0-build /mnt/microSD/usr/src cp -a /tmp/newmodules/lib /mnt/microSD/lib
现在,您可以将所有需要的内容带入到嵌入式环境中。 我认为你正在做目标系统上的compat_wireless构建,而不是交叉编译它?
注意
如果您的内核版本与内核源码相同,那么只需复制内核源代码,并忽略上面的复制指令中的linux-3.5.0-build
这是旧的,但有些人需要这些信息。
我花了好几个小时来弄清楚build文件夹是从哪里来的,为什么在编译自己的内核的时候只是一个链接。 最后算出来了;
Linux内核通常只把生成和source文件夹链接到源文件夹。
但!
Arch linux(可能还有其他一些发行版); 有一个手动脚本删除这些链接,并添加(过滤)的文件来build文件夹。
https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/linux
我已经提取该脚本独立工作(在内核源码树中): https : //gist.github.com/furkanmustafa/9e73feb64b0b18942047fd7b7e2fd53e
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。