QTCreatorで生成されたMakefileに問題があります。"Exec format error" g ++で作成されたバイナリを実行中
TESTS: ../WannaBeRPG/testes.cpp ../WannaBeRPG/hero.h ../WannaBeRPG/charinterface.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o RunTests ../WannaBeRPG/testes.cpp
フラグは次のとおりです:ここbash: ./RunTests: cannot execute binary file: Exec format error
は私のメイクファイルルールがどのように見えるかです:すべては私の端末は述べています、私は自分自身に私のテストのための新たな実行可能ファイルを作成しようとする場合を除いて正常に動作しています
CXX = g++
CXXFLAGS = -pipe -g -std=gnu++0x -Wall -W -fPIC $(DEFINES)
INCPATH = -I../WannaBeRPG -I. -I/usr/lib64/qt5/mkspecs/linux-g++
DEFINES = -DQT_QML_DEBUG
それは、ここではとにかく便利であれば、私のtestes.cppファイルです:
#include <gtest/gtest.h>
#include "hero.h"
TEST(teee, HPTEST)
{
Hero myHero("Hika",150,100,0,0,0,0,0,0,0);
EXPECT_EQ(100,myHero.getHP());
}
int main_tests(int argc, char* argv[])
{
testing::InitGoogleTest(&argc,argv);
return RUN_ALL_TESTS();
}
私はFedoraを使用しています。 これはなぜこのように動作しますか?このMakefileからのプライマリexecは完全にうまく動作します。
私は100%確信しているわけではありませんが、./RunTestsを実行するには実行権限が必要であり、そのディレクトリに実行権限が必要です。$ ls -l RunTestsは何かを返す必要があります-rwxr-xr-xまたは少なくとも-rwx ------または少なくとも-rx ------のように指定します。また、見つかったディレクトリもチェックします。実行権限には "x"も必要です。 "umask"変数の値に問題があるかもしれません。つまり、新しいファイルが作成されると、そのファイルから実行権限が削除されます。 umaskを読んでください。 –
@ThomasHedden、権限の問題は "Exec形式エラー"を引き起こしませんでした。 –
さて、この種の問題に対処するときに取るべきステップの1つは、 'file RunTests'を使ってバイナリの型を判断することです。 –