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 は親プロセスの作業ディレクトリにあり、端末コードは同じディレクトリから実行されます。