2013-10-20 99 views
0

使用fork()和execlp(),我試圖編譯一個cpp文件到一個.so。我正在運行一個複製的g ++ - 4.8可執行文件,它位於我的項目目錄樹中。當從終端上運行,一切順利,我結束了一個工作動態庫,但是當我做一個子進程,並使用execlp做同樣的事情,我得到一個錯誤:g ++在用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是在父母的工作目錄進程,並從該目錄執行終端代碼。

回答

1

@@@是二進制(ELF)文件頭部的典型序列。你忘了NULL終止你的參數列表到execlp(),所以它讀垃圾並試圖將它傳遞給g ++。

+0

好吧,那很容易。 – NmdMystery

相關問題