- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在为嵌入式设备交叉编译 3.4.0 内核。然后我想安装需要 /lib/modules/3.4/build
目录和子文件的 compat-wireless 驱动程序。谁能解释一下我如何构建该目录,以便当我执行 INSTALL_MOD_PATH=newmodules make modules_install
时它会加载 /lib/modules/$(uname -r)/build
目录还有吗?如果您能给我一个明确的解释,我将不胜感激。
我正在使用 debian 发行版。我知道我可以通过 apt-get install linux-headers-$(uname -r)
安装内核头文件,但我怀疑这是否是个好主意,因为内核源代码可能不相同。
最佳答案
通常/lib/modules/$(uname -r)/build 是指向执行构建的目录的软链接(soft link)。所以这样做的方法就是简单地做一个
make modules_install INSTALL_MOD_PATH=/some/root/
在内核的构建目录中,/some/root 是您希望交叉编译片段结束的地方。这将在/some/root/lib/modules/$(uname -r) 中创建一个指向您的内核构建路径的链接……验证这一点。
现在,当您构建 compat_wireless 驱动程序时,使用 KLIB_BUILD 变量(阅读 Makefile)将 Makefile 中的内核构建目录指定为/some/root
make modules KLIB_BUILD=/some/root/lib/modules/$(uname -r)/build
这应该可以解决问题。
编辑一个
在回答您的以下评论时:
将“newmodules”放在内核目录之外,将它放在内核目录中是个坏主意。所以 mkdir newmodules 像/home/foo 或/tmp 之类的地方。这是您的构建链接被搞砸的原因之一
另外 .../build 是一个软链接(soft link)/to/kernel/build/location 它只会作为软链接(soft link)复制过来。您还需要使用相同的相对位置将实际的内核源代码/内核构建目录复制到您的 microSD。例如,
假设您的内核源代码位于:
/usr/src/linux-3.5.0/
您的内核构建目录是:
/usr/src/linux-3.5.0-build/
您的新模块(在以下 1. 之后)位于:
/tmp/newmodules/
因此,在/tmp/newmodules/下,您会看到安装在树中的模块,如下所示:
lib/modules/$(uname -r)/
当你在这个目录中执行 ls -al 时,你会看到构建是一个软链接(soft link)到:
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
关于linux - building/lib/modules/$(uname -r)/build 编译内核时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16688138/
根据 g++ -print-search-dirs,我的 C++ 编译器正在许多目录中搜索库,包括 ... /lib/../lib/: /usr/lib/../lib/: /库/: /usr/lib/
我在 GLUT 演示的顶部看到了代码,我很好奇它的功能。 为什么有人要编写#pragma 而不是只包含库? 最佳答案 此 pragma 允许库作者根据一系列可在编译时分析的标准定义库导入。例如,您可以
Intel describes libm.lib 作为静态库,libmmt.lib 作为多线程静态库 (/MT) 和 libmmds.lib 作为多线程静态库 (/MD) 都实现了 LibM Math
我在 Windows 7 32 位上使用 Visual Studio 2010。 我在 http://www.directxtutorial.com/Lesson.aspx?lessonid=9-4-
我正在尝试将一些 html 转换为 pdf。经过一些谷歌搜索后,我发现 dompdf但是当我尝试转换时,我会检索 PHP-font-lib must either be installed via c
目前我的visual studio基本上是在生成Engine.dll和Game.exe Engine.dll 链接到其他一些基本库,例如:d3dx9d.libComCtl32.libWinMM.lib
我正在尝试将 material-ui 用于项目。使用它时会抛出以下错误: 我曾尝试通过 github 存储库解决类似问题,但没有任何运气。任何人都有任何想法可能是什么问题?我正在添加 package.
为了简化,我有两个库:libA.lib、libB.lib libA 具有以下功能: void read(num,*val){ *val=Globalval[num]; ... } libB: void
我有一个包含两个项目的 VS2010 解决方案。第一个项目 [DevLib] 是一个库,它基本上是另一个我们没有源代码的库 [ExtLib] 的包装器。构建这个库工作正常。 第二个项目 [TestAp
我想用我做了一些小更改的系统库替换它。这两个库都是使用相同版本的cyanogenmod 源代码编译的。我复制到 SD 卡的那个可以在早期的 CM 闪存上运行。 现在我尝试运行以下命令: $ adb s
我正在使用源代码中的Postgres 13(Rel_13_STRATE分支),并且我使用的是来自apachea/age源代码的(Release/PG13/1.3.0分支)中的1.3.0版的Apache
看起来 Jetty 团队想要在版本 6 和 7 之间进行一些 Spring 清理,并且看起来好像一个有用的系统属性“jetty.lib”不存在、不起作用,或者只是在未指定的情况下发生了更改以便使我的
我正在尝试使用 unixODBC 连接到 Oracle,但它不起作用。到目前为止,我已经尝试关注 How do I setup Oracle ODBC drivers on RHEL 6/Linux
我在我的 Linux Mint 14 Nadia 中安装了 Matlab(a uname -a 显示:Linux Ideapad-Z570 3.5.0-17-generic#28-Ubuntu SMP
我有一个需要使用 macdeployqt 设置的应用程序,但是当我调用它时,它告诉我它无法在/usr/lib/目录中找到一些库。 在调用 macdeployqt 之前,我必须将 3 个库 (.tx)
此特定问题是由于指定对路径中包含空格的 lib 文件的依赖项引起的。路径需要用引号括起来,项目才能正确编译。 在项目属性的Configuration Properties -> Linker -> I
我正在努力尝试让 OpenCV 2.2 库与我的项目(运行 VSC++,2010)一起工作。我按照 http://opencv.willowgarage.com/wiki/VisualC%2B%2B
总而言之,我想要的是避免在多个 .dll 中出现重复的 .lib 文件,因为生成的 .dll 将在一个 .exe 文件中一起使用,这会使 .lib 文件中的全局状态重复。 具体问题: 我有一个包含 3
我正在尝试使用 Intel TBB 和 IPP 构建 OpenCV v2.3.1。我使用 CMake 生成 Visual Studio 2010 解决方案。构建成功,我在输出中有 opencv_cor
我不明白 use local::lib 经常做 use lib 没有。有人可以解释一下吗? 最佳答案 常规 use lib foo几乎就像这样简单: BEGIN { unshift(@INC, foo
我是一名优秀的程序员,十分优秀!