orocos安装_动脑共享单车环境搭建
编译分⽀
当前编译的是主分⽀
重点:
(1)理解的意义再去考虑编译;
(2)如果⾃⼰在下⾯的各个编译中,没有到相关的⽬录,则⾃⾏创建。
(3)不要盲⽬⼀遍⼀遍地去试,遇到编译错误,先思考下哪⾥可能出问题再百度查,如果百度不能解决则在⾥提问。
0. 先理解cmake
先理解src⽬录下的,只有理解了其意义,去编译⼯程才有意义,否则就是浪费时间。
(1)INCLUDE_DIRECTORIES指定包含的⽬录;
(2)LINK_DIRECTORIES库⽂件的⽬录
(3)TARGET_LINK_LIBRARIES需要链接哪⼀些库
(4)ADD_SUBDIRECTORY包含的⼦⽬录
(5)AUX_SOURCE_DIRECTORY查在某个路径下的所有源⽂件
#NodeServer cmake config file for src
#cmake version request
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
#project name⼯程名
PROJECT(brks)
#Head file path 头⽂件
# ../third/include是第三⽅库⽂件的头⽂件所在路径
INCLUDE_DIRECTORIES(../third/include)
thrift
INCLUDE_DIRECTORIES(./service)
INCLUDE_DIRECTORIES(./intf)
INCLUDE_DIRECTORIES(./common)
INCLUDE_DIRECTORIES(./bus)
#library path 库⽂件所在⽬录,curl和event是我编译的时候新加的
# 编译出错是可以对⽐下我这个⽂件
LINK_DIRECTORIES(../third/lib/curl)
LINK_DIRECTORIES(../third/lib/event)
LINK_DIRECTORIES(../third/lib/jsoncpp)
LINK_DIRECTORIES(../third/lib/tinyxml)
LINK_DIRECTORIES(../third/lib/log4cpp)
LINK_DIRECTORIES(../third/lib/thrift)
LINK_DIRECTORIES(../third/lib/iniparser)
LINK_DIRECTORIES(./common)
LINK_DIRECTORIES(./bus)
LINK_DIRECTORIES(./intf)
LINK_DIRECTORIES(./service)
#debug mode
SET(CMAKE_BUILD_TYPE Debug)
>>>>>>>>>>>>>
AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR} SOURCE_FILES)
ADD_EXECUTABLE(brks ${SOURCE_FILES})
#for backtrace_symbols
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic -Wall -g3 -m64 -pipe -std=c++0x -lrt -Wno-reorder -Wdeprecated-declarations -fpermissive")
# 需要链接哪⼀些库(第三⽅库)
TARGET_LINK_LIBRARIES(brks log4cpp)
TARGET_LINK_LIBRARIES(brks thrift)
TARGET_LINK_LIBRARIES(brks thriftnb)
TARGET_LINK_LIBRARIES(brks event)
TARGET_LINK_LIBRARIES(brks libjsoncpp.a)
TARGET_LINK_LIBRARIES(brks libtinyxml.a)
TARGET_LINK_LIBRARIES(brks curl)
TARGET_LINK_LIBRARIES(brks iniparser)
TARGET_LINK_LIBRARIES(brks mysqlclient)
TARGET_LINK_LIBRARIES(brks pthread)
TARGET_LINK_LIBRARIES(brks dl)
# 链接⼦⽬录⽣成的库⽂件
TARGET_LINK_LIBRARIES(brks bus)
TARGET_LINK_LIBRARIES(brks intf)
TARGET_LINK_LIBRARIES(brks common)
TARGET_LINK_LIBRARIES(brks service)
#⼦⽬录
ADD_SUBDIRECTORY(bus)
ADD_SUBDIRECTORY(common)
ADD_SUBDIRECTORY(intf)
ADD_SUBDIRECTORY(service)
#install
#SET(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR})
SET(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR})
INSTALL(TARGETS brks DESTINATION bin)
已经编译的库⽂件
image.png
需要⾃⼰再编译的库
thrift event curl jsoncpp 这部分我编译成静态库放到brks/third的include和lib⽬录
mysqlclient lua 直接编译到linux系统
target_link_libraries
TARGET_LINK_LIBRARIES(myProject comm) # 连接libhello.so库,默认优先链接动态库,如果要静态链接请显式链接libcomm.a TARGET_LINK_LIBRARIES(myProject libcomm.a) # 显式指定链接静态库
TARGET_LINK_LIBRARIES(myProject libcomm.so) # 显式指定链接动态库
再如:
TARGET_LINK_LIBRARIES(myProject libcomm.so)  #这些库名写法都可以。
TARGET_LINK_LIBRARIES(myProject comm)
TARGET_LINK_LIBRARIES(myProject -lcomm)
1. 我编译完后third的include和lib
third/include
lqf@ubuntu:~/dongnao/brks/third/include$ ls
boost curl evdns.h event.h event2 evhttp.h evrpc.h evutil.h include.am iniparser json log4cpp thrift tinyxml
third/lib
lqf@ubuntu:~/dongnao/brks/third/lib$ ls
boost curl event iniparser jsoncpp log4cpp thrift tinyxml
2. 编译第三⽅库
2.1. 编译log4cpp
log4cpp 已经编译好,这⾥只是提供⼀个编译的⽅法
lqf@ubuntu:~/dongnao/brks_third/log4cpp$ git tag
...
v2.8.1
v2.8.3
v2.9.0-rc1
# 选择tag,不⽤master,master容易有bug
lqf@ubuntu:~/dongnao/brks_third/log4cpp$ git checkout v2.9.0-rc1
修改
将动态库改为静态库(由SHARED改为STATIC)
image.png
使⽤cmake的⽅式编译
cd log4cpp
mkdir build
cd build
cmake ..
make
编译后的build⽬录下
将include的log4cpp整个⽂件夹拷贝到brks/third/include
将 liborocos-log4cpp.a重命名 liblog4cpp.a并拷贝到brks/third/lib/log4cpp
lqf@ubuntu:~/dongnao/brks_third/log4cpp/build$ ls
< CMakeFiles Makefile ake configure-tryouts include liborocos-log4cpp.a orocos-log4cpp.pc
2.2 编译tinyxml
unzip tinyxml_2_6_2.zip
cd tinyxml
需要修改tinyxml的Makefile以编译静态库
(1)使⽤vim或者其他的编辑器打开Makefile⽂件
(2)将其中的注释为Targets of the build的下⼀⾏OUTPUT := xmltest
⼀⾏修改为:OUTPUT := libtinyxml.a
(3)将其中的注释为Source files 的下⼀⾏SRCS:=tinyxml.cpp tinyxml-parser.cpp xmltest.cpp tinyxmlerror.cpp tinystr.cpp中的xmltest.cpp删除,因为它只是⼀个测试源⽂件,不需要编译。修改后为:SRCS := tinyxml.cpp tinyxmlparser.cpp tinyxmlerror.cpp tinystr.cpp
(4)将其中的Output的下⼀⾏的${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS}修改为:${AR} $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS}。修改后为:
${OUTPUT}: ${OBJS}
${AR} $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS}
# ${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS}
(5)将Makefile的倒数第⼆⾏ xmltest.o:tinyxml.h tinystr.h,注释掉,因为不需要将演⽰程序添加到静态库中。然后保存退出。
#xmltest.o: tinyxml.h tinystr.h
(6)在终端下进⼊Makefile所在⽬录,执⾏make命令编译,即可在Makefile所在⽬录下⽣成libtinyxml.a⽂件。
编译完后的⽬录
lqf@ubuntu:~/dongnao/brks_third/tinyxml$ ls
tinystr.h tinyxml.o tinyxmlerror.cpp utf8test.gif xmltest.cpp
< tinyXmlTest.vcxproj tinystr.o tinyxml.sln tinyxmlerror.l xmltest.o
docs tinyXmlTestSTL.vcxproj tinyxml.cpp tinyxmlSTL.vcxproj tinyxmlparser.l
libtinyxml.a tinystr.cpp tinyxml.h tinyxml_lib.vcxproj tinyxmlparser.o xmltest
(1)将tinyxml.h拷贝到brks/third/include/tinyxml
(2)将libtinyxml.a拷贝到brks/third/lib/tinyxml
2.3 安装jsoncpp
JSON(JavaScript Object Notation) 是⼀种轻量级的数据交换格式。
先安装scons
sudo apt-get install scons
下载和解压
tar -zxvf jsoncpp-src-0.5.
编译和安装
cd jsoncpp-src-0.5.0
scons platform=linux-gcc
拷贝头⽂件和库⽂件
⽣成的静态库和动态库在jsoncpp-src-0.5.0/libs/linux-gcc-5.4.0⽬录
lqf@ubuntu:~/dongnao/brks_third/jsoncpp-src-0.5.0/libs/linux-gcc-5.4.0$ ls
libjson_linux-gcc-5.4.0_libmt.a libjson_linux-gcc-5.4.0_libmt.so
(1)将libjson_linux-gcc-5.4.0_libmt.a改名为libjsoncpp.a并拷贝到brks/third/lib/jsoncp
(2)将jsoncpp-src-0.5.0/include⽬录的json整个⽬录拷贝到brks/third/include
2.4 安装libcurl
libcurl主要功能就是⽤不同的协议连接和沟通不同的服务器~也就是相当封装了的sockPHP ⽀持libcurl(允许你⽤不同的协议连接和沟通不同的服务器)。, libcurl当前⽀持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样⽀持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可以使⽤PHP的ftp扩展), HTTP基本表单上传,代理,cookies,和⽤户认证。
下载和解压
tar -xzf curl-7.61.
编译和安装
cd curl-7.61.1
./configure
make
make test (可选)
#sudo make install 不安装,⾃⼰直接拷贝

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论