Author Archives: lyping

编译报错:file not recognized: File format not recognized

entek/lyping/App/LinkSDK/components/ota/ota_md5.o /home/alientek/lyping/App/LinkSDK/components/ota/aiot_ota_api.o -lpthread
hello.o: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
Makefile:22: recipe for target ‘main’ failed
make: *** [main] Error 1

原因:最初使用X86编译器,更换为ARM的编译,有部分文件为X86编译器

解决办法:make clean

清理后再编译。

在这里插入图片描述

(arm -pocky) error: stdio.h: No such file or directory

先讲一下我遇到这个问题的前提情况:
1.使用的是poky的交叉编译器,使用前配置环境变量 source
我的:source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
[这个目录是我的,不具参考性,根据你下载安装交叉编译器的目录配置环境变量就行]

2.编译hello.c 命令: $CC hello.c -o hello
这种情况下不会报错(所以并不是我刚刚搜索的大多数解决方案–配置C++/C环境)
3.使用makefile编译项目时 CC = arm-poky-linux-gnueabi-gcc
makefile 中一些关于CC的代码:

在这里插入图片描述

然后makefile 执行的时候就会报如标题所示的错误
下图:

在这里插入图片描述

=========================================================
解决方案:
1.查看你当前编译器 “$CC” 是什么内容
我的如下图:

在这里插入图片描述

[如果不是交叉编译器,要记得修改环境变量哦亲]
2.很简单 把你所有的 “$CC”的内容都放在makefile CC = ****
我的改了是:CC=arm-poky-linux-gnueabi-gcc -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 –sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi
(不具有参考性,根据自己echo 出来的内容填写才是最佳)

以上 希望你成功解决这个bug 加油!

在这里插入图片描述

Ubuntu 搭建GO开发环境

1、go开发环境的下载网址: https://golang.google.cn/dl/
ubuntu就下载linux的

2、然后找到刚才的下载目录,将下载的二进制包解压至 /usr/local目录

tar -C /usr/local -xzf go1.12.7.linux-amd64.tar.gz

3、添加GOPATH(GOPATH为自己创建的存放GO项目的工作目录[不建议同GOROOT为同一个路径],可以有多个,以:分隔,但是使用go get 下载的包默认会装到第一个GOPATH下)

export GOPATH=$HOME/Go

4、添加GOROOT

export GOROOT=/usr/local/go

5、添加PATH

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

6、Go项目必须下载到GOPATH下的github.com路径下,想要在任何地方运行go项目,可以这样设置

export GO111MODULE="on"

7、某些包由于长城太高被墙挡住了,可以配置如下,轻松拉取之前拉不下来的包

export GOPROXY=https://goproxy.io

以上方法参数是临时有效,如果需要长期使用,需要新增到环境变量文件

sudo gedit ~/.profile

使文件立刻生效,$ source ~/.profile重启系统即可

在这里插入图片描述

C语言 状态机 条件执行语句

        /* ... */
        switch ( menu() )             // 根据menu()的结果跳转
        {
        case 'a':
        case 'A': action1();               // 执行动作1
                    break;           // 不执行任何其他动作
        case 'b':
        case 'B': action2();       // 执行动作2
                    break;           // 不执行默认的动作
        default:  putchar( 'a' ); // 如果没有识别到任何命令,输出一个警告信息
        }