3
私はqmake/makeを使ってライブラリをビルドしています。現時点ではビルドは機能していますが、結果として得られるライブラリを使用することはできません。qmakeでdefault CFLAGSを変更する方法はありますか?
TEMPLATE = lib subdirs
CONFIG = create_prl staticlib
QMAKE_CXXFLAGS = -Wall -pedantic -fPIC
QMAKE_CFLAGS = -Wall -pedantic -fPIC
# and Sources + headers
:
CFLAGS = -Wall -pedantic -fPIC
CXXFLAGS = -Wall -pedantic -fPIC
マイ.PROファイルは、この情報が含まれています
CFLAGS = -Wall -pedantic -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -O2 $(DEFINES)
CXXFLAGS = -Wall -pedantic -fPIC -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -O2 $(DEFINES)
Makefileを修正し、それらのオプションを使用して、それが動作:
qmakeはこのMakefileを生成し問題は、qmakeに必要なフラグだけを生成するように指示する方法です。 (すなわち-Wall -pedantic -fPIC
)
あなたは本当にこれらのオプション一つ一つの除去を開始し、トラブルの原因となるものを把握する必要があります。私の感想は、1つか2つの問題があるということです。 '-m64'は64ビットコードを作成しますが、32ビットコードとリンクしようとしていますか? **正確なプラットフォームは何ですか**(使用しているmkspecは何ですか?) –
コンパイルオプションを変更する必要がある場合は、 'qtbase/mkspecs'の関連するファイルを修正してから、Qtを再コンパイルして再インストールしてから、アプリケーションを再コンパイルする必要があります。コンパイラオプションを変更すると、ライブラリはバイナリと互換性がなくなり、既存のQtバイナリを再利用することはできません! –
また、C++ APIまたはC APIフォームをライブラリに公開するかどうかを決定する必要があります。 C APIを公開すると、32ビット/ 64ビットマシンが適切に選択されていることを確認する以外に、C++コンパイラーのオプションはライブラリーのユーザーにとって重要ではありません。 –