HPSocket交叉编译

前言

HPSocket开源代码,一个高性能的socket通信库,提供了丰富的功能和简单的调用方式,使用前需要自己把源码编译出静态库和动态库,以供在代码中链接使用。本文记录了HPSocket在arm-linux平台的交叉编译过程。

1. 下载HPSocket源码包

我下载的版本是HP-Socket-v5.9.3.tar.gz,在Linux的用户下新建 hpsocket 目录,并进入到hpsocket目录。

把 HP-Socket-v5.9.3.tar.gz 存放到hpsocket目录,并使用如下命令解压。

tar -xvzf HP-Socket-v5.9.3.tar.gz

2. 增加编译脚本的可执行权限

进入 HP-Socket-v5.9.3/Linux/script 目录,执行 chmod +x *.sh

3. 配置交叉编译工具

下一步的编译中需要指定交叉编译工具,所以需要提前配置好交叉编译工具的路径。我用到的交叉编译工具是arm-linux-gnueabihf-g++,如果执行 arm-linux-gnueabihf-g++ -v 命令,有如下结果输出,说明已经配置ok。

配置方法如下:

我在嵌入式平台厂商提供的Linux SDK的根目录下,执行的如下命令。你需要进入到自己平台的对应目录下执行如下命令。

export FMQL_LINUX_SDK=$(pwd)

export ARCH=arm
export CROSS_COMPILE=${FMQL_LINUX_SDK}/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
export PATH=         ${FMQL_LINUX_SDK}/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin:$PATH

4. 开始编译

./compile.sh -c arm-linux-gnueabihf-g++ -p arm

等待几分钟,编译完成。编译结果生成到 Linux/lib 目录。

lib/hpsocket     目录下的编译结果供C++语言编译使用。

lib/hpsocket4c 目录下的编译结果供C语言编译使用。

.a为静态库,.so为动态库,_d为调试版本

5. C代码中使用动态库

第一步,新建hpsocket_test_c目录,新建 hpsocket_test_c/hpsocket-5.9.3 目录。

第二步,复制 hpsocket/HP-Socket-v5.9.3/Linux/include 到 hpsocket_test_c/hpsocket-5.9.3 目录,把 libhpsocket4c.so 也复制过来。

第三步,编写 hpsocket_test.c 和 makefile

hpsocket_test.c 文件

#include "stdio.h"
#include "hpsocket/HPSocket.h"

int main()
{
    printf("HPSocket test in\n");

    return 0;
}

makefile文件

CC = arm-linux-gnueabihf-g++

CFLAGS   = -Wall

# 指定hpsocket头文件目录
INCLUDES = -I./ -I./hpsocket-5.9.3/include

LDFLAGS  = -lpthread -lm

# 调用libhpsocket4c.so动态库
LDFLAGS += -lhpsocket4c -L./hpsocket-5.9.3

OBJS     = hpsocket_test.o

all : hpsocket_test

# $@: 表示目标
# $<: 表示第一个依赖
# $^: 表示所有的依赖

# make hpsocket_test
hpsocket_test:$(OBJS)
	$(CC) -o ../bin/$@ $^ $(LDFLAGS)


# 编译.o文件
%.o:%.c
	$(CC) -c $< -o $@ $(INCLUDES) $(CFLAGS)

# 表示伪目标,防止有同名文件,可以加上.PHONY:clean
.PHONY:clean
clean:
	rm -f hpsocket_test
	rm -f *.o

 注:需要使用 arm-linux-gnueabihf-g++ 来进行编译。

编译通过,就可以在此基础上编写一个简单的tcp client程序。

6. 基于C代码的TCP客户端程序

TODO

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值