首页 > 其他分享 >C语言常见编译错误与执行错误

C语言常见编译错误与执行错误

时间:2022-10-31 17:38:02浏览次数:131  
标签:文件 错误 lib librtcr C语言 编译 so conf hello


hello: line 1: syntax error: unexpected word (expecting “)”)

编写fasync_jni应用程序放在Tiny210开发板上跑会出现如下错误:

C语言常见编译错误与执行错误_库文件

然后编写一个最简单的hello world程序放在Tiny210开发板上跑也会出现类似这样的错误:hello: line 1: syntax error: unexpected word (expecting “)”)

解决办法:加上-static选项,arm-linux-gcc hello.c –static –o hello
貌似将库文件编译到应用程序里面之后就能执行。
另外放在哪个目录去执行也比较重要,最好放在根目录去执行。


/udisk # ./uevents /system/bin/sh: ./uevents: not found

问题解法同上,编译的时候加上–static


error: unknown type name ‘uint32_t’

如果在自己的头文件中有用到uint32_t,要在这些头文件中包含stdint.h


cannot open shared object file: No such file or directory

具体错误如下:
./rts5401_ft2: error while loading shared libraries: librtcr.so.1: cannot open shared object file: No such file or directory
也就是运行缺少动态链接库,在网上查了主要有3种方法:
1、用ln的方法将需要的so文件链接到/usr/lib或者/lib这两个默认的目录下边
ln -s /where/you/install/lib/*.so /usr/lib
sudo ldconfig
2、修改LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/where/you/install/lib:$LD_LIBRARY_PATH
sudo ldconfig
3、修改/etc/ld.so.conf
vim /etc/ld.so.conf
add [where you install lib]
sudo ldconfig

我采用第3种方法
在/etc/ld.so.conf.d目录下添加文件librtcr.conf,文件librtcr.conf文件中记录librtcr链接库文件的路径,添加完了之后使用sudo ldconfig来重新将库文件的路径加到系统路径下面。


make: * No rule to make target ` ‘, needed by xxx. Stop

基本上都是属于找不到所依赖的文件所导致的,所以应该去检测确保所依赖的文件是否真实存在。
很可能,很常见的一个现象就是,此处的,误写了多余的空格,导致被视为依赖文件,导致找不到,导致报此错误。
解决办法就很简单,去掉多余的空格即可。


field has incomplete type

linux下编译C++代码报错,报错信息”field has incomplete type”。这种问题一般都是在头文件对类或者结构体进行了前向声明,后面使用了该类定义了对象,导致编译报错。
原因在于前向声明类或者结构体,此时编译器还不知道定义,无法知道类内部成员,所以无法构造实例对象,因此前向声明的类或者结构体只能用来定义指针或者引用


function declaration isn’t a prototype

参考文章:​​function declaration isn’t a prototype​​​
In C int foo() and int foo(void) are different functions. int foo() accepts an arbitrary number of arguments, while int foo(void) accepts 0 arguments. In C++ they mean the same thing. I suggest that you use void consistently when you mean no arguments.


标签:文件,错误,lib,librtcr,C语言,编译,so,conf,hello
From: https://blog.51cto.com/u_15854579/5810524

相关文章

  • C语言哈夫曼编码压缩解压
    C语言哈夫曼编码压缩解压一、实验目的掌握哈夫曼编码基本运算以及存储结构表示。二、实验内容:1.系统要求包含以下功能1)初始化:从终端读入字符集大小n,以及n个字符和n......
  • C语言面向对象思想
     (17条消息)C语言面向对象思想_lzs_blog的博客-CSDN博客_c实现面向对象C语言面向过程的,而C++是面向对象的。l 面向过程,我认为过程就是步骤,是解决问题的按部就班。l......
  • AArch64下编译及使用sigar
    服务器:鲲鹏裸金属操作系统:CentOS7.5  AArch64版步骤如下:1.从github上下载源码  sigar-sigar-1.6.4.tar.gz 2.将源码上传至服务器上并解压,进入....../sig......
  • c语言字符串相关——strlen与sizeof strcpy与memcpy strcmp 数字char型+'0'与-'0
    目录strlen与sizeofstrcpy与memcpystrcpymemcpystrcmp--字符串比较数字char型+'0'与-'0'char-->int:-'0'int-->char:+'0'字母char型+'a'与-'a'atoi等接口使用strl......
  • 使用dtc将dtb反编译成dts
    ​​kernel_dir/script/dtc/dtc-Idtb-Odts-oxxx.dtsxxx.dtb​​​dtb通过dtc转换为dts后是一个全的devicetree,因为之前​​​#include"xxx.dtsi"​​中的内容也......
  • android编译
    m:Makesfromthetopofthetree(编译全部模块)。mm:Buildsallofthemodulesinthecurrentdirectory(编译当前目录下的所有模块)。mmm:Buildsallofthemodulesin......
  • mac版 AutoCAD(LT)安装失败,提示错误“Error 112”的解决方法
    很多网友反映,第一次安装AutoCAD(LT)2022或者2023的时候都能成功,但是有问题卸载后,想要重装时,安装到一定进度后,进度条会回退到0,然后提示安装失败,错误Error112。,这种情况如何......
  • 编程C语言复习
    运算符的优先级从高到低大致是:单目运算符、单目就是一个操作数,比如++,a++,操作数只有一个a双目就是两个操作数,最熟悉的就是+,a+b,计算a、b的和三目就是三个操作数......
  • Java小白翻身教程-链表结构与编译大法(3)
    D盘下面的tool文件夹已经有三个工具类了(其实是两个,CustNode是为了TuziLinkedList服务的),我们这一节来进行打包,这样的好处就是不用每次编译都把tool里面的类也带上了。步骤1......
  • Hadoop搭建的时候,安装包编译为什么要编译?
    cdh版本编译 jar下载问题。因为官方只提供源码包 需要自己编译。软件运行某些特性跟操作系统相关 结合具体操作系统编译符合它版本的软件。修改源码中某些属性。编译......