程序复制到其他主机上执行的问题

pengxn 2009-05-04 09:09:14
由于代码安全性的需要,部门考虑把代码和可执行程序进行分离。在UNIX环境下,2个环境变量和软件基本完全一样的机子。一台保存有程序原代码,编译生成的库文件和可执行程序拷贝到另外一台机器上(运行机),并在运行机上正式执行。

想请教一下,这样编译的过程中,有哪些地方需要注意?

已经发现TUXEDO相关的程序,直接复制可执行程序,是不能正常运行的。
...全文
106 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
puheavy123 2009-05-10
  • 打赏
  • 举报
回复
用ldd看看调用了哪些lib,直接全部拷贝过去看能不能启动
morris88 2009-05-04
  • 打赏
  • 举报
回复
既然有 core,那就用 gdb 看看就能知道在什么地方出问题了,在向前回溯代码就能查到问题了
调试嘛,一般原则都是具体问题具体分析的
  • 打赏
  • 举报
回复
只要机器硬件架构一样,库一样,环境变量设置好就是。
我曾经这样试过QT的可执行文件。
jixingzhong 2009-05-04
  • 打赏
  • 举报
回复
这个情况比较抽象

事实上,在多数情况下,我们都尽量保证程序的开发环境和使用环境一致,以减少问题。

如果情非得已,那么就避免使用平台相关的API,然后,享受调试过程吧···
pengxn 2009-05-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 morris88 的回复:]
首先全部采用静态库链接方式编译链接成可执行文件,放到目标机上运行。
如果有问题,比较容易分析、定位问题。
然后用动态库方式...
[/Quote]

如何分析定位呢?请提供点方法,谢谢

感觉会不明不白的CORE掉
morris88 2009-05-04
  • 打赏
  • 举报
回复
首先全部采用静态库链接方式编译链接成可执行文件,放到目标机上运行。
如果有问题,比较容易分析、定位问题。
然后用动态库方式...
ckc 2009-05-04
  • 打赏
  • 举报
回复
如果是为了源代码安全
你们可以把.o文件放到目标机器上再连接,这样对环境的要求会降低一些
tuxedo不太了解,换一台机器tuxedo不可以运行可能是tuxedo的配置不同吧
重新执行tmloadcf试下
独孤过儿 2009-05-04
  • 打赏
  • 举报
回复
第一点:

比如SPARC架构上编译出来的程序,即使gcc的版本完全相同,也不能拿到X86架构的机器上去运行

你说的环境变量的设置,我说的第三点里面已经包括了
pengxn 2009-05-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fetag 的回复:]
1、硬件架构是否完全一致

2、操作系统系列、版本最好完全一致

3、开发环境和运行环境最好一致,尤其是运行环境,这个主要是动态链接库的部分

基本上保证以上三方面,程序就完全可以兼容了
[/Quote]

第1点,能不能说的细一点。

还有个别问题,比如TUXEDO程序有编译许可和运行许可的问题,还有一些环境变量设置也需要都匹配
once_and_again 2009-05-04
  • 打赏
  • 举报
回复
就怕,不同的系统对某一个函数的支持也不一样,
比如posix中的,pthread_cond_wait(),
一个函数都可能导致整个程序 挂掉.
独孤过儿 2009-05-04
  • 打赏
  • 举报
回复
1、硬件架构是否完全一致

2、操作系统系列、版本最好完全一致

3、开发环境和运行环境最好一致,尤其是运行环境,这个主要是动态链接库的部分

基本上保证以上三方面,程序就完全可以兼容了

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧