windows11+Clion+vmware16+ubuntu14.0+gcc远程编译运行tuxedo的sample客户端程序

本文章仅仅是个人学习过程记录,内容的准确性无法保证,仅做参考。

一、安装Clion

实验目的,简单为主,本次直接官网下个30天试用期版本安装即可。

二、安装vmware16

请参考:vmware16+ubuntu14.04安装配置tuxedo11并运行sample-CSDN博客

三、安装ubuntu14.0

请参考:vmware16+ubuntu14.04安装配置tuxedo11并运行sample-CSDN博客

四、远程编译环境配置

 1.Clion配置远程链接:本地clion开发/优雅地调试,并实时同步远程服务器_clion远程开发-CSDN博客

写的非常详细,关于这篇文章中写的gdb调试的内容,如果暂时不用,可以先不管。我的目标是使用远程编译,能够实现目标即可。

2.本地工作目录和远程工作目录映射配置

学习过程不熟悉,由易到难,一步步摸索,因此没有直接远程tuxedo的目录下编译。而是把本地目录与远程目录做如下映射:

3.坑:由于一开始使用的模式net模式,虚拟机中ubuntu的IP不是静态IP,隔两个小时会变化,用Clion链接ubuntu隔两个小时就会断开链接,需要重新设置IP,非常不方便。因此我对ubuntu设置了静态IP,设置方法参考:​vmware虚拟机ubuntu系统配置静态ip​_windows下如何设置虚拟机ubuntu的静态ip地址 vmware-CSDN博客

如果设置静态IP过程中碰到重启网络有报错,可以参考: 

ubuntu提示错误stop: Job failed while stopping-CSDN博客

五、以上环境搭建搞定后,编译simpcl.c

1.新建simpc文件夹,并在下面新建simpcl.c文件,把tuxedo提供的样例程序拷贝过来

2.新建simpcl目录下CMakeLists.txt文件,内容如下:

cmake_minimum_required(VERSION 2.8.12.2)
project(cliontest C)
set(CMAKE_C_STANDARD 11)

#添加链接选项,解决dlopen dlclose等链接报错问题
set(LINK_FLAGS    "-Xlinker --no-as-needed")
set(CMAKE_SHARED_LINKER_FLAGS "${LINK_FLAGS}")

#设置头文件路径
set(INC_DIR ../include)

#设置链接库路径
set(LINK_DIR ../lib)

#引入头文件
include_directories(${INC_DIR})

#引入库文件
link_directories(${LINK_DIR})

#编译文件
add_executable(simpcl simpcl.c)

#将第三方库连接在一起
target_link_libraries(simpcl ${CMAKE_SHARED_LINKER_FLAGS} tux buft  dl fml fml32 engine pthread )

3.顶层CMakeLists.txt内容如下:

cmake_minimum_required(VERSION 2.8.12.2)
project(cliontest C)
set(CMAKE_C_STANDARD 11)

#添加链接选项,解决dlopen dlclose等链接报错问题
#set(LINK_FLAGS    "-Xlinker --no-as-needed")
#set(CMAKE_SHARED_LINKER_FLAGS "${LINK_FLAGS}")

add_subdirectory("${PROJECT_SOURCE_DIR}/simpcl" "${PROJECT_SOURCE_DIR}/simpcl/output")   #生成的目标文件会放到output目录

#设置头文件路径
#set(INC_DIR ./include)

#设置链接库路径
#set(LINK_DIR ./lib)

#引入头文件
#include_directories(${INC_DIR})

#引入库文件
#link_directories(${LINK_DIR})

#编译文件
#add_executable(cliontest main.c)

#将第三方库连接在一起
#target_link_libraries(cliontest ${CMAKE_SHARED_LINKER_FLAGS} tux buft  fml dl fml32 engine pthread )

     上面顶层CMakeLists.txt文件中注释掉的内容,是因为一开始,我为了省事儿,没有新建simpcl子目录,直接把新建工程中main.c的内容改成了simpcl.c中的样例程序,后来为了编译多个目标程序,这里给注释掉了,只是用来生成顶层makefile

     另外,多目标编译的时候,Clion有个配置要修改为所有目标。如下图:

4.点击build,Clion提示信息如下:

ssh到ubuntu上,可以看到生成的simpcl

问题:1.链接库时报错

xxx@ubuntu:~/tuxedo12.1.1.0/simpapp$ gcc -I$TUXDIR/include -o simpcl -L${TUXDIR}/lib simpcl.c -ltux -lbuft -lfml -lfml32 -lengine -ldl -lpthread

/home/sqj/tuxedo12.1.1.0/lib/libengine.so: undefined reference to `dlopen'

/home/sqj/tuxedo12.1.1.0/lib/libengine.so: undefined reference to `dlclose'

/home/sqj/tuxedo12.1.1.0/lib/libengine.so: undefined reference to `dlerror'

/home/sqj/tuxedo12.1.1.0/lib/libengine.so: undefined reference to `dlsym'

解决方法是在CMakeLists.txt中添加如下内容 

#添加链接选项,解决dlopen dlclose等链接报错问题 set(LINK_FLAGS "-Xlinker --no-as-needed") set(CMAKE_SHARED_LINKER_FLAGS "${LINK_FLAGS}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值