c++ - g++ 在使用 execlp 运行时出现错误,但不是从终端运行?

标签 c++ linux gcc g++ exec

我正在尝试使用 fork() 和 execlp() 将 cpp 文件编译为 .so。我正在运行一个复制的 g++-4.8 可执行文件,它位于我的项目目录树中。当从终端运行时,一切顺利,我最终得到了一个工作动态库,但是当我创建一个子进程并使用 execlp 做同样的事情时,我得到一个错误:

g++-4.8: error: @@@: No such file or directory

这重复了 6 次,“文件名”中的几个字符稍微改变了一点。为了比较,这是我在终端中写的:

$ g++/bin/g++-4.8 -fPIC -shared bob.cpp -o bob.so

...这是生成错误的代码:

if (fork() == 0) {
    execlp("g++/bin/g++-4.8", "g++/bin/g++-4.8", "-fPIC", "-shared", "bob.cpp", "-o", "-bob.so");
}

bob.cpp 在父进程的工作目录中,终端代码从同一目录执行。

最佳答案

@@@ 是二进制 (ELF) 文件 header 中的典型序列。您忘记将 NULL 终止到 execlp() 的参数列表,因此它读取垃圾并尝试将其传递给 g++。

关于c++ - g++ 在使用 execlp 运行时出现错误,但不是从终端运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19474609/

相关文章:

c - GCC 无法编译,甚至在基本代码上也会从它自己的库中给出大量错误

c++ - 如何使用 GCC 4.3 在 -std=gnu++98 模式下使用 C99 数学函数?

c++ - 无法创建addressbook.pb.h对象(从protoc构建)

linux - 是否有任何 GUI 工具可以查看带有源代码的编译文件?

android - 修改 Linux 内核配置文件

gcc - 如何在autoconf配置脚本/makefile中添加到库的链接

c++ - 限制多个模板参数友元函数可访问的类实例的范围

c++ - 编译错误 : g++-v4/tr1_impl/type_traits(226): error: expected an identifier

c++ - 需要使用初学者逻辑创建 C++ 二进制计算器

linux - 查找所有不以特定字符开头的文件?