1.虚拟机硬盘扩展
df -h //查看现有硬盘容量
fdisk [磁盘设备] //创建新的磁盘分区
2.生成congfigure文件
autoreconf -ivf
3.安装libtool库
apt install libtool //将会同时安装autoconf等软件
4.安装bison和flex
apt install bison
apt install flex
Flex和Bison是Linux下用来生成词法分析器和语法分析器两个程序的工具
5.配置环境变量
vim /etc/profile
export PATH=/root/matiec:${PATH}
. /etc/profile //“.”表示加载
6.运行matiec
./configure && make //本地编译
./configure --host=x86_64-w64-mingw32 && make //交叉编译(Linux到Windows)
iec2c -f -l -p -r -R -a -I /home/zwx/Program/matiec/lib -T /home/zwx/Program/matiec/demo /home/zwx/Program/matiec/demo/test.st //启动iec2c执行plc.st文件得到C文件
host:编译出来的二进制程序所执行的主机,因为绝大多数是本机编译,本机执行,所以这个值就等于build。只有交叉编译的时候(也就是本机编译,其他系统机器执行)才会build和host不同。用host指定运行主机
7.git下载github分支
git clone -b 分支名 网址.git
或者
git clone 网址.git //已经下载所有分支到本地,只是默认只显示main一个分支
git branch -a //查看所有分支
git checkout 分支名 //切换到分支名
8.虚拟机字体优化
sudo apt-get update
sudo apt install gnome-tweaks
gnome-tweaks
9.构建MinGW-w64交叉编译器
mingw-w64-build是一个bash脚本,用于构建Win32和x86_64(Win64)交叉编译器。
./mingw-w64-build x86_64
mount是Linux下的一个命令,它可以将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区
10.Linux gdb调试
//1.生成可执行文件
gcc -g 文件名.c -o 文件名
//2.启动gdb进程
gdb 文件名
//3.设置参数
set args 参数列表
//4.设置断点
b 行号
b 函数名
b 类名::函数名
//5.查看断点
i b
//6.删除断点
d 断点的编号
//7.启动程序
run
//8.调试
s //单步调试
n //单行调试
//9.打印变量的值
p 变量名
//10.打印调用的堆栈
bt
//11.退出gbd
q
11.解压缩
- tar -zxvf test.tar.gz
- tar -jxvf test.tar.bz2
12.文件查找
grep -lwr "ADD" ./*
find . -name *.xml | xargs grep "ADD"
13.下载另一个服务器的文件
scp root@10.12.2.98:/home/sugon/zhangwenxiang/matiec/iec2c.exe .
14.重定位目标文件的格式
readelf -s 目标文件
15.编译出so文件
gcc -fpack-struct -fno-stack-protector -g3 -O0 -I ../lib/C -fPIC -c Config0.c -o Config0.o && gcc -fpack-struct -fno-stack-protector -g3 -O0 -I ../lib/C -fPIC -c Res0.c -o Res0.o &&
gcc -fpack-struct -fno-stack-protector -g3 -O0 -I ../lib/C Config0.o Res0.o -o plc.so -shared
或者
clang-16 -fpack-struct -I ../lib/C -fPIC -c Config0.c -o Config0.o && clang-16 -fpack-struct -I ../lib/C -fPIC -c Res0.c -o Res0.o && clang-16 -fpack-struct -I ../lib/C Config0.o Res0.o -o plc.so -shared