本开发使用的是curl库文件进行POSE数据传输
首先在Linux系统下进行编译,提示 undefined reference to `curl_easy_init’
那么在编译的时候导入库文件 就是加入命令 -l curl
gcc -l curl test.c -o test
一般的Linux下都有该库文件,如果没有,自己百度找方法,这个比较容易
下载的库文件是连接是(官网)
https://curl.haxx.se/download.html
在Linux系统下实现pose数据之后,基本功能也就完成了。
接下来就是问题的就是要解决交叉编译的问题。因为安装的交叉编译环境,直接用arm-linux-gcc编译的文件找不到库文件,所以开始的时候总是提示
一开始我以为简单的把/usr/inlcude/下的 curl.h等库文件直接复制到我所需要编译的工程目录下即可。其实这并不行。因为交缠编译的时候,编译器并不是这样去查找所需文件的
百度之后,找到一篇博客,对我非常有用,贴上链接就是因为按照该步骤,使我能够正确编译生成库文件
arm 的交叉编译 方式(在下载了源码包并且解压进入该目录之后,直接把以下文字复制粘贴到命令行窗口,回车)
在完成了PC端的编译后,arm的交叉编译就简单很多,之前的步骤都一样,解压进入目录。
输入配置信息如下:
CPPFLAGS="-I/home/linux/arm/openssl/ -I/home/linux/arm/openssl/include" LDFLAGS="-L/home/linux/arm/openssl/lib" LIBS="-ldl" ./configure --host=arm-linux CC=arm-linux-gcc CXX=arm-linux-g++ --with-ssl --enable-shared --enable-static --disable-dict --disable-ftp --disable-imap --disable-ldap --disable-ldaps --disable-pop3 --disable-proxy --disable-rtsp --disable-smtp --disable-telnet --disable-tftp --disable-zlib --without-ca-bundle --without-gnutls --without-libidn --without-librtmp --without-libssh2 --without-nss --without-zlib --prefix=/home/linux/arm/curl
其中 --host=arm-linux CC=arm-linux-gcc CXX=arm-linux-g++配置交叉编译器
(如果是读者是使用别的编译器的时候,改成对应的即可)
正常情况不会出错,如果出错,根据提示再具体解决吧。然后 make 接着 make install
那么 prefix 指定的就是无误编译生成依赖包的文件目录
有了这个之后,接下来的事情就好办了
include是生成的头文件,lib是依赖库
所以,编译的命令是
arm-linux-gcc curl.c -o Curl -lcurl -I/home/linux/arm/curl/include -L/home/linux/arm/curl/lib
可以看到,已经编译成功。
lib目录,该文件生成的是包含了动态链接库,进入该文件下
cd /home/linux/arm/curl/lib
我是开了nfs,直接挂在到共享目录下
cp -a libcurl.so* /FriendlyARM/nfs/lib/
然后再 在开发板上,将该库文件复制到 /lib 目录下
cp /mnt/lib/* /lib/
这一步就是把库文件放在开发板上,程序运行所需
最后,把交叉编译生成的可执行文件传到开发板上运行即可。
最后放上几个参考链接:
http://blog.csdn.net/strugglelg/article/details/8926989
http://blog.csdn.net/MingLLu/article/details/50161901
http://blog.csdn.net/yk150915/article/details/78813374