首页
学习
活动
专区
圈层
工具
发布

xmake v2.5.2 发布, 支持自动拉取交叉工具链和依赖包集成

现在,xmake 已经可以支持自动下载项目所需的工具链,然后使用对应工具链直接编译项目,用户不需要关心如何配置工具链,任何情况下只需要执行 xmake 命令即可完成编译。 ?...项目源码 官方文档 入门课程 新特性介绍 自动拉取远程交叉编译工具链 从 2.5.2 版本开始,我们可以拉取指定的工具链来集成编译项目,我们也支持将依赖包切换到对应的远程工具链参与编译后集成进来。...拉取交叉编译工具链 我们也可以拉取指定的交叉编译工具链来编译项目。...模块定义文件将被传递给链接器,使所有符号从.dll中导出。对于全局数据符号,当对.dll中的代码进行编译时,仍然必须使用__declspec(dllimport)。...linux 系统信息 #1217: 支持当编译项目时自动拉取工具链 #1123: 添加 rule("utils.symbols.export_all") 自动导出所有 windows/dll 中的符号

2.1K10

服务器开发语言比较

,其他平台可以使用MonoDevelop,非常方便 运行效率:JIT的性能优化比较到位,能适应90%性能环境 部署便捷性:可以通过交叉编译生成其他平台的可执行文件,通过mono运行可执行文件 调试便捷性...DLL,也不支持DLL加载(linux平台的.so加载忽略不计) Web对接:非常方便, 代码精简 崩溃处理:崩溃后以命令行方式打印出栈,程序内可以捕获任何崩溃错误并继续运行 网络库编写难度:简单,比C...上手度:2~3年经验的熟手仍然会写出崩溃和泄露代码 热更新:可通过DLL进行 Web对接:代码啰嗦,第三方库少 崩溃处理:Windows下可使用SEH捕获段异常,其他平台只能通过崩溃后进行coredump...从发文时的项目对这些语言使用率来说,Java,Erlang,C++编写的服务器较多,Golang,JavaScript,C#是第二梯队,Skynet由于上手不是很容易,所以仅有两位数的团队在使用,但总体表现还是比较出色的...对于老团队, C++的服务器工具链和框架已经相对成熟, 完全没必要更换新语言, 只是在对接sdk感觉困难时,可以尝试Golang这些对web有优势的语言进行混合语言开发 对于新团队,开发效率,上手度和部署效率是优先选择的

2.2K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    连1.0版本都没有,Uber为什么会采用这样一项新技术?

    本文从技术和社交两方面简单介绍了“Uber 是如何使用 Zig 的”,而主要的篇幅是介绍“我把 Zig 带到 Uber 的经验”。 本文要点: Uber 使用 Zig 来编译其 C/C++ 代码。...现在,我们看下非封闭式 C++ 工具链的局限性: 不能交叉编译。所以,如果需要 CGo 的话(我们的许多服务都需要),我们就无法在 Mac 上编译生成 Linux 上的可执行文件。...而不是交叉编译来解决。 CGo 的可执行文件将链接到系统上发现的 glibc 版本。也就是说,在升级操作系统时(数月的努力),构建机群必须最后升级。...可以链接到通过命令行参数提供的 glibc 版本(例如,-target x86_64-linux-gnu.2.28将以 x86_64 Linux 为编译目标并链接到 glibc 2.28)。...2021 年底:Uber 需要交叉编译 我的任务是为 Uber 评估 arm64。撇开评估细节不说,我需要为 linux-arm64 编译软件。大量的软件!

    1.9K20

    服务器开发语言比较

    ,其他平台可以使用MonoDevelop,非常方便 运行效率:JIT的性能优化比较到位,能适应90%性能环境 部署便捷性:可以通过交叉编译生成其他平台的可执行文件,通过mono运行可执行文件 调试便捷性...DLL,也不支持DLL加载(linux平台的.so加载忽略不计) Web对接:非常方便, 代码精简 崩溃处理:崩溃后以命令行方式打印出栈,程序内可以捕获任何崩溃错误并继续运行 网络库编写难度:简单,比C...上手度:2~3年经验的熟手仍然会写出崩溃和泄露代码 热更新:可通过DLL进行 Web对接:代码啰嗦,第三方库少 崩溃处理:Windows下可使用SEH捕获段异常,其他平台只能通过崩溃后进行coredump...从发文时的项目对这些语言使用率来说,Java,Erlang,C++编写的服务器较多,Golang,JavaScript,C#是第二梯队,Skynet由于上手不是很容易,所以仅有两位数的团队在使用,但总体表现还是比较出色的...对于老团队, C++的服务器工具链和框架已经相对成熟, 完全没必要更换新语言, 只是在对接sdk感觉困难时,可以尝试Golang这些对web有优势的语言进行混合语言开发 对于新团队,开发效率,上手度和部署效率是优先选择的

    3.9K130

    基于Android平台的ffmpeg编译

    前面介绍了Android jni 相关知识,但jni最终还是要调用的第三方的C/C++库,这里我们以ffmpeg为例,介绍第三方C/C++如何编译成android 版本。...对应第三方代码,直接拷贝到 android studio 开发不太现实,因为这些第三方代码可能非常庞大,而且依赖很多其他库,其他库又依赖其他库,最通用的解决的方案是利用Android NDK的工具链进行交叉编译...所以我们在Linux PC机上利用Android NDK的工具链编译C/C++代码生成一个so供jni调用就显得更通用更自然的做法。...工具链中的头文件与库文件 由此可见,ndk编译Android的 so库本质就是使用交叉工具链交叉编译,与常规的嵌入系统开发流程没有啥区别。.../www.ffmpeg.org/download.html 3、编写编译脚本 编译脚本的基本思路:配置交叉编译相关的变量,在configure生成makefile时指定交叉编译工具链来编译,而不是默认采用宿主机的自带的

    88640

    交叉编译概念详解

    2.2 交叉编译链的命名规则 我们使用交叉编译链时,常常会看到这样的名字: ‍ arm-none-linux-gnueabi-gcc arm-cortex_a8-linux-gnueabi-gcc...Differences ( https://www.uclibc.org/downloads/Glibc_vs_uClibc_Differences.txt ) 3.3 GDB GDB 用于调试程序 4 如何得到交叉编译链...既然明白了交叉编译链的功能,那么在针对嵌入式系统开发时,我们需要的交叉编译链从哪儿得到?...常见的交叉编译链下载地址: 在 http://ftp.arm.linux.org.uk/pub/armlinux/toolchain/ ( http://ftp.arm.linux.org.uk/pub...详细的搭建过程可以参看后续的文章,这里面有详细的参数和步骤:交叉编译详解 二 从零制作交叉编译链 ( http://blog.csdn.net/pengfei240/article/details/52917018

    5K10

    xmake v2.3.9 发布, 新增独立 Xrepo CC++ 包管理器

    同时,xrepo 也支持从 vcpkg/homebrew/conan 等第三方包管理器中安装包,并提供统一一致的库链接信息,方便与第三方项目的集成对接。...,使用 musl.cc 上的编译工具链进行编译。...xmake 就会自动拉取 zlib/openssl 源码包,然后使用 arm-linux-musleabi-cross 交叉工具链编译安装 zlib 和 openssl,安装完成后,自动集成到 test...如果要看哪些包支持交叉编译,可以直接到包仓库站点查看:支持交叉编译的C/C++包列表 我们也可以使用新版本中提供的 xrepo 命令,直接检索指定平台支持的包(支持模糊查询): $ xrepo search...这对于嵌入式开发来讲尤其有用,因为嵌入式平台的交叉编译工具链非常多,我们经常需要各种切换来完成不同平台的编译。

    1.3K30

    使用 cmake 来搭建跨平台的应用程序框架:C语言版本

    这种要求对于 Linux 系列的平台来说,还是比较好处理的,大部分情况下只需要换一个交叉编译工具链即可,涉及到硬件平台相关部分再嵌入几个内联汇编。...阅读这篇文章,您可以收获下面几个知识点: cmake 在编译库文件、应用程序中的相关指令; Windows 系统中的动态库导出、导入写法; 如何利用宏定义来进行跨平台编程; 在公众号后台留言【430】...在 Linux/Windows 系统中可以直接编译、执行,拿来即用。 二、示例代码说明 1. 功能描述 示例代码的主要目的,是用来描述如何组织一个跨平台的应用程序结构。...Utils 目录说明 这个目录的编译输出是库文件: Linux 系统:libUtils.so, libUtils.a; Windows 系统:libUtils.dll, libUtils.lib, libUtils.a...需要把 libUtils.dll 动态库文件复制到 main.exe 所在的目录下,然后再执行,即可成功。 ?

    1.6K40

    交叉编译问题记录-嵌入式环境下 GDB 的使用方法

    编译类型可以分为三种:(假设交叉编译工具链安装在 x86-linux 平台,待编译的目标嵌入式平台为 arm-linux 平台,这里仅为了说明意图,平台命名并不严谨) [1] 编译 PC 平台普通程序.../configure --build=x86_linux --host=x86_linux --target=x86_linux [2] 编译交叉编译工具链 交叉编译工具链的特别之处在于,它在 x86...制作交叉编译工具链并不需要使用交叉编译。一般执行如下形式的配置命令: ./configure --target=arm_linux 将缺省的参数补全,实际等效于如下命令: ....,IP:192.168.202.141 虚拟机上安装的 C 交叉编译器为 mipsel-openwrt-linux-gcc,即交叉编译工具链的前缀为 mipsel-openwrt-linux。...遗留问题 交叉编译过程中,一般使用交叉编译工具链的前缀作 --host 及 --target 的值;--build 参数一般不指定,编译时自动推测。

    3.6K00

    python及第三方库交叉编译

    2、为什么要交叉编译:在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如常见的ARM 平台,其一般的静态存储空间比较小,而CPU运算能力弱。...三、python及其第三方库的交叉编译背景   1、交叉编译链:rv1126-arm-buildroot-linux-gnueabihf-toolchain.tar.bz2   2、目标板子(target...1、解压交叉编译链:说明不同的平台的使用的交叉编译链不同,但是思路和步骤是一样的。     .../relocate-sdk.sh (不是所有交叉编译链都需要这一步的)   4、将交叉编译链添加到环境变量:vim /etc/profile   5、在最后添加:export PATH=$PATH:/home...,这样在交叉编译openssl就会使用我们的交叉编译链进行交叉编译了         --prefix: 已经是交叉编译后的路径   5、在编译后生成的Makefile中有两处是 -m64 的标记要删除

    5.9K20

    使用Zig在arm64上引导Uber的基础设施

    那么如何编译成 arm64 二进制文件?当然是直接在 arm64 主机上进行原生构建,或者通过交叉编译。我们有必要先来了解一下原生编译和交叉编译的差异和要求。...在进行交叉编译时,主机和目标是不同的平台(例如,从 macOS arm64 (M1) 编译成 x86_64 Linux)。有时候,目标机器可能无法编译代码,但可以运行。...通常是交叉编译工具链所必需的,下面将会讨论。 aarch64 或 arm64 是指处理器架构。 下图显示了如何通过原生编译(左)和交叉编译(右)将源文件 main.c 编译成可执行文件。...基础镜像包含许多从 Go 代码库编译出来的内部工具。因此,我们遇到了一个先有鸡还是先有蛋的问题:如何为我们的第一个 arm64 构建主机编译工具?...在撰写本文时,GCC 和 LLVM 都不能交叉编译 macOS 二进制文件。因此,我们维护了一个专门的构建集群来编译 macOS 目标平台。

    85830

    从Windows示例代码入手,逐步剖析Wine实现原理

    本文将指导你如何通过编译一个经典的 “Hello, World!”...Wine主要由以下几个部分构成: 一组实现了Windows API的Linux库: 这是 Wine 的核心,包含了大量 Windows DLL 的开源实现。...加载器(loader): 负责加载 Windows 可执行文件(.exe),并将其链接到实现了 Windows API 的 Linux 库上。 实践步骤:从“Hello, Wine!”..., TEXT("HelloMsg"), 0); return 0; } 第二步:在Linux上编译 Windows 程序 为了避免切换到 Windows 操作系统,我们在 Linux 上编译生成一个...要在 Linux 上编译此代码以生成 Windows 可执行文件,需要安装 MinGW-w64 交叉编译工具链。 大多数 Linux 发行版的软件包管理器中都提供了 MinGW-w64 。

    36010

    基于NXP i.MX28 MPU的疫情监控平台1-交叉编译环境搭建

    进行 ARM Linux 开发,通常选择 arm-linux-gcc 交叉编译器。ARM-Linux 交叉编译器可以自行从源代码编译,也可以从第三方获取。...在能从第三方获取交叉编译器的情况下,请尽量采用第三方编译器而不要自行编译,一是编译过程繁琐,不能保证成功,二是就算编译成功,也不能保证交叉编译器的稳定性,编译器的不稳定性会对后续的开发带来无限隐患。...而第三方提供的交叉编译器通常都经过比较完善的测试,确认是稳定可靠的。...6.配置交叉编译工具到环境变量 在进行交叉编译时,我们是使用的绝对路径来编译C程序,但是这个路径太长了,每次输入很麻烦。...交叉编译工具链 7.scp传输文件到开发板 在使用交叉编译工具链,编译出arm.o文件时,我们是通过拷贝到U盘,然后把U盘插到开发板上来运行程序的,但是这样未免太麻烦了。

    1.8K30

    Ubuntu实现树莓派交叉编译

    要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(cross compilation tool chain),然后用这个交叉编译工具链编译源代码,最终生成可在目标平台上运行的代码。    ...编译第三方源代码时,可以看下工程中的readme和install文件,一般情况下都会写编译步骤。 1、....#能显示正确信息 $arm-linux-gnueabihf-g++ -v #能显示正确信息 注意:交叉编译时,如果出现arm-linux-gnueabihf-XXX...找不到,确定arm-linux-gnueabihf-XXX -v 是否能输出正确信息,如果能,可以切到root下进行编译 三、编译源代码 1、在写编译脚本时,一定要确保编译器写的是交叉编译的编译器...2、编译第三方库 如果你想设置全局的CC和CXX变量,在每次打开一个新的Terminal时,输入以下命令: 1 $export CC=arm-linux-gnueabihf-gcc

    2.9K50

    MinGw与Cygwin的区别

    也就是 GNU编译器家族 的意思。当然,如今的GCC借助于他的特性,具有了交叉编译器的功能,即在一个平台下编译另一个平台的代码。...她所连接的程序,不需要任何第三方库就可以运行了。 在某种程度上看,MinGW更像是VC的替代品。...3、从依赖上说 程序经MinGW 编译后可以直接在Windows 上面运行。 程序经Cygwin 编译后运行,需要依赖安装时附带的cygwin1.dll。...Cygwin是用一个dll模拟linux环境来“欺骗”应用程序,好像自己运行在linux环境下;而mingw是在编译时提供linux到windows必要代码的“翻译”转换,用到的还是windows运行时库...在cygwin下编译出来的程序需要cygwin.dll才能在windows下运行,源码拿到linux环境下重新编译就可以在linux下跑起来;mingw环境下编译出来的程序,只能在windows下跑,源码在

    6.4K31

    c++动态库和静态库的区别_静态库里面包含动态库

    动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入。不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例,规避了空间浪费问题。...为显式链接到 DLL,应用程序必须: l 调用 LoadLibrary(或相似的函数)以加载 DLL 和获取模块句柄。...另外如何从C++动态库中获取类,附上几篇相关文章,但我并不建议这么做: l 《LoadLibrary调用DLL中的Class》:http://www.cppblog.com/codejie/archive...l 动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在,因此代码体积较小。...如经典的DLL Hell问题,关于如何规避动态库管理问题,可以自行查找相关资料。

    2.5K30

    Linux实现树莓派3B的国密SM9算法交叉编译——(一)环境部署、简单测试与eclipse工程项目测试

    要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(cross compilation tool chain),然后用这个交叉编译工具链编译源代码,最终生成可在目标平台上运行的代码。      ...2、编译第三方库 如果你想设置全局的CC和CXX变量,在每次打开一个新的Terminal时,输入以下命令: export CC=arm-linux-gnueabihf-gcc export CXX=...这里我们可以填写交叉编译工具链的交缀和路径,如: Cross compiler prefix: arm-linux-gnueabihf- #(别打错!)...选中左侧栏中的C/C++ Build→Settings,进行交叉编译器设置: ? 首先可以看到之前在建立工程时的前缀和编译工具链路径会在这里显示。前缀千万不要打错啊。 查看编译器工具的设置: ?...可以看到,在Command下方的All Options中出现了工具链的目录。在编译时,Eclipse就会调用 前缀 + 相应的工具 (如gcc) 去编译啦。

    1.8K32
    领券