< 返回版块

lithbitren 发表于 2024-01-16 11:25

Tags:win10,linux,ubuntu,交叉编译

开发机是win10,调试运行啥的都在win10上,服务器是ubuntu22.04,cargo开发。

cargo目录下,src的各个子文件里分别分类包含了一些静态文件,即某些子rs文件调用的一些静态文件会放在相同文件夹下,方便查找静态文件调试,不一定把所有静态文件都放在专门的static文件夹下。

希望交叉编译到服务器上,上传到服务器的文件夹里,只保留可执行文件和若干静态文件,应该怎么操作部署,最佳实践是啥?

评论区

写评论
aj3n 2024-01-17 13:53

交叉构建也可以试试cargo-zigbuild, 不像cross需要docker(在win10下就要linux虚拟机了)环境,zigbuild是native的,当然如果需要动态链接第三方c库linux大概躲不掉;

作者 lithbitren 2024-01-17 01:30

仔细看了下,貌似就是加载进内存的,不过应该问题不大,静态文件大多数情况下本身就不大

--
👇
lithbitren: 不过有个小问题,rust-embed是否会把所有静态文件加载进内存里,尽管影响不太大

作者 lithbitren 2024-01-16 20:57

不过有个小问题,rust-embed是否会把所有静态文件加载进内存里,尽管影响不太大

作者 lithbitren 2024-01-16 20:18

谢谢大佬,简单看了下github,rust-embed可能是解决方案了,我试试。

之前我也是用cross交叉编译的,但程序都比较简单,静态文件都放static,具体的目录层级自己拷贝到线上再调试,也没碰到过什么太大的问题。

这次想规整规整代码,把内容类似前端那样组件化归置,就发现比较麻烦了。

--
👇
lsk569937453: 1.跨平台编译用cross(https://github.com/cross-rs/cross) 2.把静态文件打包到执行文件里用https://github.com/pyrossh/rust-embed

lsk569937453 2024-01-16 16:39

1.跨平台编译用cross(https://github.com/cross-rs/cross) 2.把静态文件打包到执行文件里用https://github.com/pyrossh/rust-embed

jerryshell 2024-01-16 13:13

如果团队内部有自己的 DockerHub 私有容器仓库的话,做成镜像也行

jerryshell 2024-01-16 13:08

“正规”一点的做法应该是使用 Jenkins 之类的 CI/CD

如果是简单起见可以用 cross build 替代 cargo build,然后写个 bat 脚本把静态资源和 bin 打包成 zip 再传到 Linux

廴壬吉 2024-01-16 13:03

交叉rust不太行,你还是传源码到服务器上编

1 共 8 条评论, 1 页