linux - 在不同的机器上运行二进制文件会导致段错误

标签 linux linker g++

我不太了解 C++ 中的链接是如何发生的

我有一个在一台机器上编译的二进制文件,我想复制它并在另一台机器上运行它。

我希望它能工作,因为两台机器上的库是相同的(我认为!)并且 linux 的版本是相同的(相同的内核等)但是,当我复制它时......它在我运行它时动态链接的库之一中出现段错误。

它在我编译它的机器上运行起来就像黄油一样。但是在我将它 scp 到的机器上,当我运行二进制文件时,它立即在调用堆栈中的 std::string::compare 上与我动态链接的库之一中的某些函数发生段错误。

我尝试在两台机器上再次安装库并执行 ldconfig,但结果相同。

关于如何调试由动态链接问题引起的这些奇怪的段错误有什么想法吗?

最佳答案

好吧,如果您在调试器中运行该程序,可能有助于缩小问题范围。编译时,在g++命令中加入-g -ggdb参数,然后运行程序时,使用命令gdb ./executable(可能需要先安装gdb .) 在 gdb 提示符下,键入 run,您的程序将一直运行直到出现段错误。然后您可以尝试找出问题所在。

网上有很多使用 gdb(GNU 调试器)的教程。

关于linux - 在不同的机器上运行二进制文件会导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5073693/

相关文章:

php - 为什么 cron 作业不能在浏览器上运行,但在终端上运行完美

linux - 无法ping通我的虚拟机(Mac)

c - gcc 不会正确包含 math.h

javascript - 在 squeeze 上安装 node-js 最新版本的问题

linux - 如何删除 netcat 地址?

regex - grep 可以删除上下文,但不能删除整行吗?

gcc - 将符号从静态对象复制到共享对象

c++ - 如何解决这个未声明的标识符

c++ - "cpp-bin"在linux中是什么意思?

c++ - Windows 10-使用gtkmm-3.0库和g++的段错误[包括复制]