嵌入式Linux 调试常用工具与知识
常用工具
readelf -h XXX.a

2. 静态库(.a) 与 动态库(.so) 的详解
3. 交叉编译指定安装路径,设置交叉编译器
4. 编译动态库与静态库
5. Linux列出当前路径下指定后缀的文件
#result为重定向输出
find ${PWD} -name '*.c' > result
- 引用静态库时说找不到库中的函数,但用nm能看到那个函数?
- 考虑是不是C++和C混合使用了
- 如果使用了cmake,依赖顺序很重要,被依赖的要放在右边
参考:linux下程序链接多个静态库,提示找不到函数链接的问题。
7. cmake /start.S:86:对‘main’未定义的引用
考虑依赖顺序的问题,把控制台的日志再往前翻一翻,看哪里出错了
- C文件 CMakeList.txt编译器配置错误的问题 error:invalid conversion from ‘int’ to ‘LAYER_TYPE’ [-fpermissive]…
- 海思自己重新实现了securec,所以在hilinux系统中可以使用snprintf_s,memcpy_s这些,但是要特别注意cmake链接的时候要把被依赖的放在最右边。
- cmake target_link_libraries 链接库顺序
- linux – 管道符“|”
- 创建软连接
- Linux chmod命令
Linux C
atoi与sprintf可以反着用,sprintf为格式化输入到指定char数组,snprintf可以防患于未然(给定空间)fseek和ftell结合可以计算文件长度rewind等价于:
(void)fseek(stream,0L,SEEK_SET)
- 用
fseek产生文件空洞,可用于占用磁盘 fflush缓冲区
缓冲区的作用:大多数情况下是好事,可用来合并系统调用。
分为
行缓冲:换行时候刷,满了的时候刷,强制刷新(标准输出是这样)
全缓冲:满了的时候刷,只要不是终端设备(标准输出为终端设备)
无缓冲:stderr,需要立即输出的内容
- fseeko

可移植性不好

- 没有单位的数值没有意义。如果想要长整型,记得在数字后加L,然后再参与运算。
- 文件类型:dcb-lsp

- 考虑用
int接收char - umask

- Linux中目录的粘贴位(t位)
——《Unix环境高级编程》
如果对一个目录设置了粘着位,只有对该目录具有写权限的用户并且满足下列条件之一,才能删除或重命名该目录下的文件:
•拥有此文件;
•拥有此目录;
•是超级用户。
目录/tmp 和/var/tmp 是设置粘着位的典型候选者—任何用户都可在这两个目录中创建文件。任一用户(用户、组和其他)对这两个目录的权限通常都是读、写和执行。但是用户不应能删除或重命名属于其他人的文件,为此在这两个目录的文件模式中都设置了粘着位。