linux编译

补充“MIT Cheetah 完整开源代码仿真环境”搭建过程中文资料的细节

走远了吗. 提交于 2020-03-02 10:24:46
引言 作为世界上最先进四足之一的MIT Cheetah在2019年底被其团队开源了所有软硬件设计。针对此次开源的代码环境搭建过程,虽然该团队给出了非常详尽的安装调试过程,但是在自己安装过程中仍然有许多问题出现。所以在国内还没有详尽的资料的情况下,作者写下这篇博客。最主要目的是结合前人的工作,做具体操作过程的补充,所以读者需要结合文中所引用的资料完成自己环境的搭建。 背景介绍 当然,具作者了解到,国内首先针对该项目给出简介的是: 《廖洽源:MIT Cheetah 完整开源代码与论文简介》 文章给出了四足机器人的软硬件下载地址连接,具体介绍了软件算法的控制架构以及开源代码的结构组成,但是针对安装过程有所省略。最后给出仿真环境的操作过程及效果展示。 随后另一位复现者华北舵狗王在上文的基础上给出了更多的安装指导: 《 华北舵狗王带你一起做四足机器人9 (MIT Cheetah 开源 代码 仿真器编译) 》 文章详细说明了仿真环境在虚拟机ubuntu14.04下的安装过程,甚至给出了其自己的虚拟机镜像。 作者非常感谢上述两个作者做的前期工作,为自己环境的搭建做出的重要指导作用。由于安装过程以及程序架构已被详细讲述,所以本文不讲述详细的安装过程,仅根据个人经验补充在安装过程中可能遇到的问题。为更多对该开源项目感兴趣的腿足机器人工作者提供可参考的资料。 另外还有名为深圳机擎科技的人提供了机器人的

复习:Linux基础命令(文件、gcc编译链接原理、makefile文件、用户管理、进程管理、VMtools安装)

江枫思渺然 提交于 2020-03-02 04:15:50
一、Linux文件介绍 1.Linux文件存储层次结构—》Linux没有盘符,只有一个根目录(所有的文件都是从根目录开始存储的) (1)根目录下的一级子目录:/ibn /etc /mnt /boot /usr /root /dev /lib /proc…各个目录下存什么文件要搞清楚。比如,系统命令对应的可执行文件、系统的配置文件、资源文档等在哪里存要搞清楚。 (2)切换路径 cd (3)显示当前路径 pwd (4)查看目录中的内容 ls (ls -l 显示文件详细属性信息;ls -a 显示所有的文件,包含以“.”开头的隐藏文件) 2.Linux的文件类型 (1)普通文件(-)、 (2)目录文件(d) (3)管道文件(p) (4)连接文件(l) (5)设备文件(c b s) 3.Linux文件权限 所有者(rwx) 组用户(rwx) 其他用户(rwx) (1)r:读权限 (2)w:写权限 (3)x:对普通文件,执行权限;对于目录文件,进入权限 (4)用户管理–》分组 分为用户本身、同组用户、其他组的用户 二、Linux文件基本操作命令 1.创建文件命令 touch 2.创建目录命令 mkdir 3.删除文件、目录命令 rm rm -r 4.剪切命令 mv ……………… 2019/11/14补充 :vm 中命令行状态下的全部替换命令是 (1,$s/要替换的部分/新的部分) 例如: 1,

gcc/glibc/binutils模块简介

▼魔方 西西 提交于 2020-03-01 23:07:37
一、关于gcc、glibc和binutils模块之间的关系   1、gcc(gnu collect compiler)是一组编译工具的总称。它主要完成的工作任务是“预处理”和“编译”,以及提供了与编译器紧密相关的运行库的支持,如libgcc_s.so、libstdc++.so等。   2、binutils提供了一系列用来创建、管理和维护二进制目标文件的工具程序,如汇编(as)、连接(ld)、静态库归档(ar)、反汇编(objdump)、elf结构分析工具(readelf)、无效调试信息和符号的工具(strip)等。通常,binutils与gcc是紧密相集成的,没有binutils的话,gcc是不能正常工作的。   3、glibc是gnu发布的libc库,也即c运行库。glibc是linux系统中最底层的api(应用程序开发接口),几乎其它任何的运行库都会倚赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现,主要的如下:   (1)string,字符串处理   (2)signal,信号处理   (3)dlfcn,管理共享库的动态加载   (4)direct,文件目录操作   (5)elf,共享库的动态加载器,也即interpreter   (6)iconv,不同字符集的编码转换   (7)inet

linux外部模块编译——利用kbuild进行编译

折月煮酒 提交于 2020-03-01 21:18:17
0 须知 内核源码树需要已经成功编译过一次才可以进行模块的编译 1.命令行形式 make -C ~/kernel-2.6 M=`pwd` modules -C make进入linux源码所在文件夹,从而获得内核的顶层Makefile,从而利用kbuild进行外部模块的编译 -M make在执行目标前返回到模块源代码所在文件夹 modules目标将会编译所有包含在obj-m变量下的module.o文件 2.Makefile 可以通过编写Makefile来利用make命令减少输入的指令 2.1 示例 #If KERNELRELEASE is defined, we've been invoked from the #kernel build system and can use its language. ifneq ( $( KERNELRELEASE ) , ) obj-m : = hello.o # Otherwise we were called directly from the command # line; invoke the kernel build system. else KERNELDIR ? = /lib/modules/ $( shell uname -r ) /build PWD : = $( shell pwd ) default: $( MAKE )

C总结-part_1

那年仲夏 提交于 2020-03-01 15:07:44
1_C语言概述 1、库引用 1.1、几个例子 例1,调用系统指令 // b.c #include<stdlib.h> int main(void) { // system函数,相当于在命令行界面中输入对应的命令 system("ll.exe"); return; } gcc -o b b.c 编译b.c,生成可执行文件b 例2,system的返回值 // b.c #include<stdlib.h> #include<stdio.h> int main(void) { // system 函数,不同的系统返回值会不同,和POSIX有关 int value = system("ls -all"); printf("调用ls:%d\\n",value); // 在C中,默认将所有返回0代表正确,返回-1表示错误(这个由开发者自己规定)。 return 0; } gcc -o b b.c 编译b.c,生成一个可执行文件b ./b 执行b文件 例3,WinExec #include<stdlib.h>// 引入一个系统库 #include<windows.h>// 引入一个系统库,可以用win exec void xx() { // win exec可以执行windows的程序,SW_HIDE用来屏蔽黑框的弹出。 WinExex("calc",SW_HIDE); } Tips

如何通过WASI SDK 在Linux上编译ZXing C++

余生颓废 提交于 2020-03-01 13:48:54
Mozilla在今年三月份的时候公布了 WASI 。WASI的目标就是让WebAssembly在任何地方都可以运行,而不仅仅像现在这样只能运行在Node.js和Web浏览器中。WASI目前依然处于初级阶段,这篇文章分享下如何把ZXing C++通过WASI Libc编译成wasm文件。 支持WASI运行时的工具 现在可以用 wasmer 和 wasmtime 通过命令行来运行支持wasi的wasm文件。wasmer提供了安装包,而wasmtime只能通过源码来编译。两个工具都支持windows, Linux和macOS。 编译ZXing C++ 下载最新的 WASI-SDK 。这个安装包中已经自带了clang,所以不需要单独安装clang。 设置环境变量: sudo dpkg -i wasi-sdk_7.0_amd64.deb export PATH=/opt/wasi-sdk/bin:$PATH export CC=/opt/wasi-sdk/bin/clang export CXX=/opt/wasi-sdk/bin/clang++ 从GitHub上下载一份 ZXing C++的源码 。 接下来要对工程结构做一些修改。首先在example中的CMakeLists.txt文件里设置sysroot: set (CMAKE_SYSROOT /opt/wasi-sdk/share

cygwin64 编译 redis2.8.3源码

匆匆过客 提交于 2020-03-01 13:00:48
1) windows 7 64 2) 安装 cygwin 64 下载相关的库 3) 下载redis 2.8.3源码 wget http: //download.redis.io/releases/redis-2.8.3.tar.gz 进入到deps目录,修改文件 deps/hiredis/fmacros.h #ifndef __HIREDIS_FMACRO_H #define __HIREDIS_FMACRO_H #if !defined(_BSD_SOURCE) #define _BSD_SOURCE #endif #if defined(__sun__) #define _POSIX_C_SOURCE 200112L #elif defined(__linux__) || defined(__OpenBSD__) || defined(__NetBSD__) #define _XOPEN_SOURCE 600 #else #define _XOPEN_SOURCE #endif //这是添加的. #if defined(__linux__) || defined(__CYGWIN__) #define _GNU_SOURCE #define _DEFAULT_SOURCE #endif #endif 然后编译deps cd deps make lua linenoise

VS C++ Linux服务器开发常用

喜你入骨 提交于 2020-03-01 12:06:05
远程Linux服务器头文件 编译时无法找到MySQL头文件 # include <mysql/mysql.h> 在Linux控制台输入 mysql_config 找到libs对应行 项目右键属性-链接器-命令行-其它选项处输入 在Linux服务器上编译时,加上-L/usr/lib64/mysql -lmysqlclient GCC/G++默认的-std(即C++语言标准)不是C++11,所以编译时还要加上-std=c++11 g ++ Server . cpp - o Server - std = c ++ 11 - L / usr / lib64 / mysql - lmysqlclient 来源: CSDN 作者: Umichan0621 链接: https://blog.csdn.net/Umichan0621/article/details/104580569

NUC980开源项目9-官方Kernel编译

℡╲_俬逩灬. 提交于 2020-03-01 11:47:48
上面是我创建的群聊,欢迎新朋友的加入。 项目码云地址(国内下载速度快): https://gitee.com/jun626/nuc980-open-source-project 项目github地址: https://github.com/Jun1172/nuc980-open-source-project ubuntu镜像,文件太大,加群私聊。 编译 BSP安装之后会获取到官方的linux kernel。 进入源码目录:cd linux-4.4.y/ 查看配置文件 ls arch/arm/configs/nuc980* 选一个进行配置 make nuc980_iot_defconfig 现在还不能直接编译,会报错找不到文件系统。 到之前下载bsp目录下,将rootfs拷贝到kernel源码同级目录。 官方配置的ramdisk镜像,文件系统会和kernel一起被打包。 同时在kernel同级目录创建image文件夹 mkdir ../image 安装软件 sudo apt-get install u-boot-tools 编译内核镜像 make uImage 编译完成,生成镜像文件 来源: CSDN 作者: Jun626 链接: https://blog.csdn.net/Jun626/article/details/104587747

bullet探索之——程序编译报错篇

寵の児 提交于 2020-03-01 10:53:41
一、找不到头文件 提示找不到main.cpp中#include的头文件之类的 解决: 看看CMakeLists.txt里的include_directories()所需库的路径加好没 不知道为啥刚开始有这个问题,后面就再也没有这个问题了。。。就算我故意弄成最开始的样子,都不报这个错了。。。奇了怪,后面遇到再说吧 二、缺少动态链接库 ×××.so 报错如下: gyh@gyh-W65KJ1-KK1:~/bullet_test/main$ make [ 50% ] Linking CXX executable 01_bullet /usr/bin/ld: CMakeFiles/01_bullet.dir/main.cpp.o: undefined reference to symbol '_ZN18btStaticPlaneShapeC1ERK9btVector3f' //usr/lib/x86_64-linux-gnu/libBulletCollision.so.2.83: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status CMakeFiles/01_bullet.dir/build.make:94: recipe for target '01