g ++ выдает ошибки при запуске с execlp, но не из терминала?

0

Используя fork() и execlp(), я пытаюсь скомпилировать файл cpp в.so. Я запускаю скопированный исполняемый файл g++ - 4.8, который находится в дереве каталогов проекта. При запуске с терминала все идет гладко, и я получаю рабочую динамическую библиотеку, но когда я делаю дочерний процесс и использую execlp для выполнения того же, я получаю сообщение об ошибке:

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

Это повторяется 6 раз с несколькими символами в "filename", которые немного изменились. Для сравнения это то, что я пишу в терминале:

$ 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 находится в рабочем каталоге родительского процесса, а код терминала выполняется из того же каталога.

Теги:
gcc
exec
g++

1 ответ

1
Лучший ответ

@@@ - типичная последовательность из заголовка двоичного файла (ELF). Вы забыли NULL завершить свой список аргументов execlp(), чтобы он читал мусор и пытался передать его на g++.

  • 0
    Ну, это было легко.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню