我正在尝试使用GDB和KDEvelop在KnoppixVM下调试控制台应用程序。KDevelop和GDB不会在我的断点处中断。我怀疑这是因为它们没有调试符号。如果我是正确的,我需要如何更改我的Makefile来创建这些文件。也许问题出在其他地方?问候,爱丽儿 最佳答案 在发送给编译器和链接器的标志中包含-g。默认变量分别是CFLAGS和LDFLAGS。第二步:从flags中排除-s(-s表示strong) 关于c-如何使用MakefileforC生成调试符号?[Linux],我们在Sta
我有源代码:#include#includeintinit_module(void){printk(KERN_INFO"Helloworld%i\n",BUILD_NUMBER);return0;}voidcleanup_module(void){printk(KERN_INFO"Goodbyeworld1.\n");}和一个生成文件:obj-m+=hello-1.oBUILD_NUMBER:=42#HowtopassBUILD_NUMBERtohello-1.c???all:make-C/lib/modules/$(shelluname-r)/buildM=$(PWD)modules
我发现我正在编写大量可以使用n元组列表清理的Makefile。但是我找不到任何方法来正确(干净地)执行此操作。到目前为止,我只能想出使用$(shell...)和tr、sed或其他非Makefile标准。例如,我想这样做:XYZs=\dog.cpull_tailbark\duck.cchasequack\cow.ctipmooall:@-$(foreachXYZ,$(XYZs),\$(CC)$X-obully/$Y;\lnbully/$Ysounds/$Z;\)有没有一种在Makefile中迭代n元组列表的好方法?谢谢! 最佳答案 M
我正在尝试这样做:我想从位于不同目录的shell脚本调用make(Makefile存在于其他目录中,可以使用abc路径)。我该怎么做呢?由于shell脚本不允许我cd进入Makefile目录并执行make,我该如何编写shell命令(通过给要执行的Makefile的路径)执行make? 最佳答案 GNUmake接受许多options,特别是-C用于在运行前更改目录,以及-f用于提供要遵循的Makefile。适本地组合它们。考虑使用remake简化Makefile相关问题的调试(特别是使用-x)。使用GNUmake版本4或更高版本,还
如果一个命令在make中失败,比如gcc,它退出...gccgcc:fatalerror:noinputfilescompilationterminated.make:***[main.o]Error4但是,如果我有一个管道,管道中最后一个命令的退出状态将被获取。例如,gcc|cat,不会因为cat成功而失败。我知道整个管道的退出代码存储在PIPESTATUS数组中,我可以使用${PIPESTATUS[0]}获得错误代码4.我应该如何构建我的makefile以处理管道命令并在失败时正常退出?如评论中所述,另一个例子是gcc|grepsomething。在这里,我假设最需要的行为仍然是g
我正在尝试同时运行服务器和客户端以从makefile运行:目标:./server&./client问题是server&永远不会返回控制权,即使我认为它应该在后台运行。它一直在监听从未调用的客户端,因为makefile似乎没有从服务器取回控制权。我该如何解决这个问题?无需编写任何额外的目标或脚本? 最佳答案 你应该能够通过将命令组合在一行中来做到这一点:target:./server&./client将命令行交给shell($(SHELL))一次一行。或者,您可以定义两个独立的目标:target:run_serverrun_clien
我有一个可以工作的Makefile,但是有一个我无法修复的警告。#Usetheg++compilerCC=g++#Compilerflags:#-Wall(mostwarningsenabled)#-g(fordebuggingwithgdb)CFLAGS=-Wall#Executablename:TARGET=deque_adtall:main.odeque_adt.odeque_adt$(TARGET):main.odeque_adt.o$(CC)$(CFLAGS)main.odeque_adt.o-o$(TARGET)main.o:main.cppdeque_adt.h$(CC)
make-C~/kernel-2.6M=`pwd`modules上面一行中的M='pwd'是什么意思?我无法理解解释:TheM=optioncausesthatmakefiletomovebackintoyourmodulesourcedirectorybeforetryingtobuildthemodulestarget.你能说得更清楚吗? 最佳答案 M不是make的选项。请注意,它缺少连字符。M是分配给make执行的变量。如果make执行一个Makefile脚本,这个脚本可以读取变量M并使用它的内容。在您提供的示例中,make将
我正在学习如何设置makefile,但遇到了问题。为了证明这一点,我创建了一个由源文件main.m和test.m组成的简单“项目”。我正在尝试设置make来编译这些文件(仅在发生更改的情况下),并将目标文件存储在其他地方(此处为build/)我的Makefile:OBJ=./buildSOURCES=main.mtest.mOBJECTS=$(addprefix$(OBJ)/,$(SOURCES:.m=.o))EXECUTABLE=testall:$(EXECUTABLE)$(EXECUTABLE):$(OBJECTS)gcc$(OBJECTS)-o$(EXECUTABLE)$(OBJ
我正在尝试将旧的makefile代码转换为CMake。你能帮助我吗?这是我目前陷入困境的部分。我不知道如何将这些参数传递给编译器。COMPILE_FLAGS=-c-m32-O3-fPIC-w-DSOMETHING-Wall-Isrc/sdk/coreifdefSTATICOUTFILE="bin/test_static.so"COMPILE_FLAGS_2=./lib/ABC.aelseOUTFILE="bin/test.so"COMPILE_FLAGS_2=-L/usr/lib/mysql-lABCendifall:g++$(COMPILE_FLAGS)src/sdk/*.cppg+