V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  alphaprogrammer  ›  全部回复第 1 页 / 共 2 页
回复总数  29
1  2  
说一下情况,就是原本写的代码时基于 x86 的,现在需要在 arm 上跑,依赖于一些第三方库(在目标机上可以直接 apt 安装)。目前由于没有 arm 环境,只能在 x86 上使用交叉编译的方式编译出 arm 可执行程序,第三方库依赖采用 dlopen 的方式去除依赖。(如果能下载 arm 版的第三方库 binary,也可以直接编译的)

目前我的实现方式有点取巧,个人感觉实现方式不太好。

首先,之前实现的代码都定义在一个 namespace A 下,
假定依赖一个 func_b,其类型为 type_func_b, 在 namespace A 下定义一个 type_func_b 的变量 func_b,变量名与函数名相同,通过__attribute__(constructor)初始化 func_b 变量,指向第三方库中的函数符号。

这样以前的代码基本不需要改,只需要根据编译 include 一个头文件即可。
有一个缺点就是必须定义在同一个 namespace 下,否则变量 func_b 会与第三方库中的函数声明冲突
@ysc3839 -_-!! 对 window 不了解,没接触过。
@hitmanx 目前在这方面尝试,dlopen 之类的壳代码不知道有没有什么方法能自动生成的
@augustheart 版本确实是一个问题,但是动态链接一样会碰到版本问题,这个是 code 应该做兼容处理的
@SPACELAN 依赖库不由我提供, 直接从特定源下载即可
@ai277014717 gcc/g++ 有这个编译选项吗?
@chinuno 这个思路不错,之前的代码可以原封不动,不用改
@littlewing 这个我知道,现在就是需要编译可执行文件
@hitmanx 目前是在这方面想,但是我希望是 动态链接的方式和 dlopen 的方式能随意切换
@fcten 但是 gcc/g++ 在链接阶段会查找可执行程序引用到的所有函数,如果找不到会报错的吧
@shylockhg 因为本地没有编译平台,只有一个交叉编译器
2020-01-13 19:15:44 +08:00
回复了 cl903254852 创建的主题 健康 有做过鼻炎手术的吗?我打算年后做,受不了了
麻黄碱类药物 不要长期用, 只能偶尔用一两次
2019-11-27 19:21:31 +08:00
回复了 imiao 创建的主题 C++ 请教 C++多线程操作 deque 遇到的一个问题
使用无锁 ringbuffer,buffer 内部存取指针,便于原子操作
2019-11-17 12:38:55 +08:00
回复了 anonymous256 创建的主题 程序员 招个人真难
就想知道这个要求开多少工资,看看自己值什么价
2019-10-20 13:01:28 +08:00
回复了 alphaprogrammer 创建的主题 程序员 需不需要用 vim 搭建开发环境来替换 IDE?
@uhayate 我现在也只会一点简单的 vi 命令,用于特殊时刻。
2019-10-20 11:57:45 +08:00
回复了 alphaprogrammer 创建的主题 程序员 需不需要用 vim 搭建开发环境来替换 IDE?
@jworg 主要是 sourceinsight 只有 window 版本, 需要开个虚拟机,有点麻烦
2019-10-20 11:54:16 +08:00
回复了 alphaprogrammer 创建的主题 程序员 需不需要用 vim 搭建开发环境来替换 IDE?
@zwpaper 我去了解下
2019-10-20 11:53:55 +08:00
回复了 alphaprogrammer 创建的主题 程序员 需不需要用 vim 搭建开发环境来替换 IDE?
@ericgui 我也觉得把时间折腾在 vim 上是不是不划算
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2864 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 07:46 · PVG 15:46 · LAX 23:46 · JFK 02:46
Developed with CodeLauncher
♥ Do have faith in what you're doing.