我试图安装GCC 4.9.0,我得到了“./configure”和“make”的错误。 我遇到了./configure错误 checking for default BUILD_CONFIG… bootstrap-debug checking for –enable-vtable-verify… no /usr/bin/ld: crt1.o: No such file: No such file or directory collect2: ld returned 1 exit status configure: error: I suspect your system does not have 32-bit developement libraries (libc and headers). If you have them, rerun configure with –enable-multilib. If you do not […]
我有这样的项目结构: src/main.cpp src/Folder/this.cpp src/Folder/that.cpp src/NewFolder/foo.cp // etc. 此外,我需要一些库,以便我可以链接,例如lboost_system 。 我怎样才能简单地使用这些给定的信息创build一个makefile? 我一直阅读关于手动创build一个makefile,CMake等等,但是这在我看来是复杂的方式! 没有任何工具可以指定以下信息: Source folder: /home/bla/src/ Additional Libs: lboost_system Compiler Flags: -std=c++0x (or whatever) 生成一个makefile文件? 这真的很难吗?
我不得不从源代码构buildgnu make ,原因太复杂了,不能在这里解释。 我注意到要build立它我需要传统的方式, ./configure make install 那么,如果我没有make二进制文件呢? 第一次制作二进制文件是从哪里来的?
我不知道标签填充是如何工作的,但是突然之间我的内容被打破了。 我甚至不知道除了用例外还提供了什么信息。 在makefile中有一个clean的目标。 $ make c<tab>结果 $ make c23:set: command not found lean 编辑:我相信不知怎么我毁了内置的bash set ,因为man set说No manual entry for set和which set不报告任何东西。 然而,在terminal上调用set会产生结果。 我正在使用: GNU bash,版本4.3.11(1) – 释放(x86_64-pc-linux-gnu)和GNU Make 3.81
是否有可能编译一个包含由非内核定义的function的Linux内核(2.6)模块? 例如: kernelmodule.h #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> // printk() // … #include <openssl/sha.h> // … Makefile文件 obj-m := kernelmodule.o all: $(MAKE) -C /lib/modules/`uname -r`/build M=`pwd` modules clean: $(MAKE) -C /lib/modules/`uname -r`/build M=`pwd` clean $(RM) Module.markers modules.order 我编写的内核模块正试图编译包含一些openssl包含文件中的function。 上面提供的标准makefile不允许包含在linux头之外。 是否有可能包括这个function,如果是的话,请你指点一下正确的方向。 谢谢,迈克
我在Makefile有一个rm *.o命令来删除编译过程中生成的所有对象文件。 但是,如果某些.o文件不存在,则会输出一些错误信息。 那么我怎样才能抑制错误信息的输出?
我在Linux中看到这些东西,但它是什么? ./configure make make install 等等
在学习Linux内核模块的同时,我可以看到两种方式来编写Makefile。 第一个是这样的: ifneq ($(KERNELRELEASE),) obj-m := module.o else default: $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules endif 后者不那么复杂: obj-m := module.o all: $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules makefile编译导致成功编译模块 。 我的学习伴随着LDD3书,至今我读到的是下一个: 这个makefile在典型的版本上被读取两次。 当从命令行调用makefile时,会注意到KERNELRELEASEvariables没有被设置。 它通过利用已安装模块目录中的符号链接构build指向内核构build树的事实来定位内核源代码目录。 如果你实际上没有运行正在构build的内核,你可以在命令行提供一个KERNELDIR =选项,设置KERNELDIR环境variables,或者重写在makefile中设置KERNELDIR的行。 一旦find内核源代码树,makefile会调用默认:target,它将运行第二个make命令(在makefile中参数化为$(MAKE))来调用内核构build系统,如前所述。 在第二次阅读时,makefile设置obj-m,内核makefiles负责实际构build模块。 如果makefile被读取两次,那么第二种方法应该导致recursion,不是吗?
我只是在阅读“Linux内核模块编程指南”,并陷入了字符设备驱动程序的例子 。 为以前的例子提供了Makefile,但不是为了这个,所以我试图做一个: obj-m += chardev.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 我得到的输出是: maciej@jadwiga:~/Projects/os/chardev$ make make -C /lib/modules/2.6.26-2-686/build M=/home/maciej/Projects/os/chardev modules make[1]: Entering directory `/usr/src/linux-headers-2.6.26-2-686' CC [M] /home/maciej/Projects/os/chardev/chardev.o /home/maciej/Projects/os/chardev/chardev.c: In function 'cleanup_module': /home/maciej/Projects/os/chardev/chardev.c:72: error: void value not ignored as it ought to be make[2]: *** [/home/maciej/Projects/os/chardev/chardev.o] […]
我用下面的命令来安装一些东西。 qmake PREFIX=/path/to/my/dir make make install 然而,我给的path是错误的,我如何更新PREFIX到正确的位置,并删除旧的安装,然后再次安装? 我试过了: rm -rf /path/to/my/dir/bin # this is where the program being installed qmake PREFIX=/path/to/correct/dir make make install 但是它仍然被安装在老路上。