GCC
GCC相关问题记录。
草丛中的蝈蝈
这个作者很懒,什么都没留下…
展开
-
No rule to make target ‘serial.c‘
在工程里新增serial.c文件,且在Makefile里的源文件里增加了serial.c文件,编译时报错"No rule to make target ‘serial.c’".根本原因是未找到serial.c文件。虽然在Makefile的源文件里增加了serial.c文件,但是serial.c文件的路径不对。在Makefile的源文件里配置正确的serial.c文件及路径。原创 2024-05-30 15:26:23 · 201 阅读 · 0 评论 -
makefile中打印信息的方法
使用echo,使用场景有限制,echo必须在某个目标下面,否则报错。使用info warning error,可在任意位置打印。:error级别的打印,会导致makefile退出!原创 2024-01-05 17:26:48 · 1186 阅读 · 0 评论 -
__attribute__((packed))相关知识
__attribute__((packed))相关知识原创 2023-10-24 14:22:52 · 82 阅读 · 0 评论 -
makefile中=、?=、:=、+=的区别
= 是最基本的赋值:= 是覆盖之前的值?= 是如果没有被赋值过就赋予等号后面的值+= 是添加等号后面的值原创 2022-01-04 19:49:59 · 201 阅读 · 0 评论 -
makefile中 rm、@rm 和 -rm的区别
@告诉make在运行时不要回显要输出的配方。-告诉make忽略配方的返回值原创 2021-12-17 14:30:34 · 2484 阅读 · 1 评论 -
makefile中all的作用
Makefile 的规则格式是这样的 target ... : prerequisites ... command ... ...比如 lz 要把一个 hello.cpp 文件编译成 helloall : hello another hello : hello.cpp g++ -o $@ $< another : another.cpp g++ -o $@ $<直接 make 或 make all 的话会执转载 2021-04-24 15:07:50 · 1468 阅读 · 0 评论 -
[原]自己编写makefile遇到的问题
makefile:4: *** missing separator. Stop.原因: 行首要加tab。makefile:4: *** recipe commences before first target. Stop.原因:直接写命令部分,而没有写依赖部分。makefiel格式为:target … : prerequisites …command原创 2021-04-24 14:38:12 · 355 阅读 · 0 评论 -
【gcc】search options
Options for Directory SearchThese options specify directories to search for header files, for libraries and for parts of the compiler: -Idir Add the directory dir to the head of the list of...原创 2019-11-12 14:58:07 · 310 阅读 · 0 评论 -
【gcc】ARM options
**ARM Options** These -m options are defined for Advanced RISC Machines (ARM) architectures: -mabi=name Generate code for the specified ABI. Permissible values are: apcs-gnu, atpcs,...原创 2019-11-12 14:54:42 · 205 阅读 · 0 评论 -
编译报错“ld: cannot find -lXXX”
qt编译报错如下:/bin/ld: cannot find -lXXXMakefile:447: recipe for target 'AAA' failedcollect2: error: ld returned 1 exit status原因:libXXX.a库的权限不对,加上读权限后解决。原创 2020-09-28 14:17:00 · 329 阅读 · 0 评论 -
使用gcc生成共享库并调用
生成和使用库文件时文件名必须符合规范,动态库文件的命令为:lib+库名称+.so,使用时-l选项后面只需要跟库名即可,不需要前缀lib和后缀.so,否则会报错。原创 2020-09-25 10:32:25 · 232 阅读 · 1 评论 -
linux下编译静态库并调用
目录结构如下:root@ubuntu:/home/aaa/makeTest# ls -ltotal 12-rw-r--r-- 1 root root 127 Sep 24 19:09 main.cpp-rw-r--r-- 1 root root 99 Sep 24 19:18 test.cpp-rw-r--r-- 1 root root 28 Sep 24 19:11 test.h将test.cpp编译为目标文件,将会生成test.o文件。g++ -c test.cpp将.原创 2020-09-24 19:37:08 · 397 阅读 · 0 评论 -
linux 下编译生成静态库和动态库
原文链接:添加链接描述我们此处为了说明静态库和动态库的编译,会使用示例代码。创建 test.h, hello.cpp 和 world.cpp, 在两个源文件中分别实现两个函数( 此处都是示例代码,文件命名不规范,理解意思即可 )。test.h (静态库头文件)#ifndef TEST#define TESTvoid hello();void world();#endifhello.cpp:#include #include “test.h”using namespace std;v转载 2020-09-24 18:41:08 · 800 阅读 · 0 评论 -
从头开始写项目Makefile(二):隐含规则自动推导
原文链接:添加链接描述上一节的Makefile勉强可用,但还写的比较繁琐,不够简洁。对每一个.c源文件,都需要写一个生成其对应的.o目标文件的规则,如果有几百个或上千个源文件,都手动来写,还不是很麻烦,这也不够自动化啊。这样,我们把生成.o目标文件的规则全部删除掉,就是这样一个Makefile文件:target_bin : main.o debug.o ipc.o timer.o tools.o—gcc -o target_bin main.o debug.o ipc.o timer.o tool转载 2020-09-24 16:10:22 · 219 阅读 · 0 评论 -
编译内部使用Eigen库的静态库的makefile
CROSS_COMPILE=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-CC=$(CROSS_COMPILE)g++AR=$(CROSS_COMPILE)arvpath %cpp cppvpath %h hCFLAGS := -c -Wall -Wno-unused-but-set-variable -fsigned-charEIGEN_ROOT=$(pwd)/Eigen/OBJ原创 2020-09-24 14:41:30 · 735 阅读 · 0 评论 -
windows下编译成功的工程转到linux下编译的几个问题
首先,得自己写一个Makefile。因为windows下的vs在后台帮我们写了一个。如果源文件和头文件不在同一个目录下,需要使用vpath命令指定源文件搜索的路径。需要把windows下的路径分隔符“\”改为linux下的路径分隔符“/”。要把window下的#include "stdafx.h"语句删除。...原创 2020-09-24 14:30:58 · 469 阅读 · 0 评论 -
工程中源文件与头文件不在同一目录,makefile怎么写
makefile中有一个VPATH命令,它的作用就是指明路径。vpath %c src //在src文件夹中找到源文件原创 2020-09-24 13:56:00 · 793 阅读 · 0 评论 -
Makefile 中:= ?= += =的区别
“=”变量的值是整个makefile中最后被指定的值。看例子:x = fooy = $(x) barx = xyz在上例中,y的值将会是 xyz bar ,而不是 foo bar 。“:=”“:=”表示变量的值决定于它在makefile中的位置,而不是整个makefile展开后的最终值。 x := foo y := $(x) bar x := xyz在上例中,y的值将会是 foo bar ,而不是 xyz bar 了。...转载 2020-09-24 13:38:06 · 74 阅读 · 0 评论