問題タブ [fpic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
602 参照

cmake - -fPIC Gentoo で再コンパイル

私は Gentoo を初めて使用し、CMake を使用して TexGen ( http://texgen.sourceforge.net/index.php/Main_Page ) と呼ばれる 3D モデリング プログラムをインストールしようとしていますが、エラーが発生し続けます。

これは次のステップで発生します。

cmakeのオプションファイルに -fPIC フラグをつけていろいろ調べてみましたが、結果に変化はありませんでした。私が言ったように、私は Linux と Gentoo にはまったく新しい (数週間程度) ので、どんな助けも大歓迎です。

0 投票する
1 に答える
4242 参照

c++ - -fPIC を含めて静的ライブラリをコンパイルすると、実行時にセグメンテーション違反が発生するのはなぜですか?

g++ で C++ スタティック ライブラリをコンパイルし、-fPIC オプションを使用しています。-fPIC オプションを使用する必要があります。これは、最終的にこのライブラリが他の静的ライブラリとリンクされて動的ライブラリを形成するためです。

スタティック ライブラリをローカルでテストすると、-fPIC オプションを含めなくても問題なく動作します。しかし、ライブラリを -fPIC でコンパイルするとすぐに、実行時に関数の 1 つを呼び出すと、セグメンテーション違反エラーが発生します。

-fPIC を含めて静的ライブラリをコンパイルすると、実行時にセグメンテーション違反が発生する理由は何ですか?

0 投票する
1 に答える
1179 参照

c++ - CMakeでライブラリの依存関係のPICバージョンにリンクするには?

CMake:

cpp-netlibに依存しています。

ビルドシステムの一部としてソースからビルドします。

cpp-netlib/CMakeLists.txt:

1 つの特定のユース ケースでは、共有ライブラリで使用する必要があるため、-fPIC有効にして 2 つ目のライブラリを作成しました。

私の共有ライブラリターゲットでは、次にリンクしますlibcpp-netlib_pic.a

foo/CMakeLists.txt:

cpp-netlibの非picバージョンに対してリンクしようとしているため、リンカーエラーが返されますboost_network

分解された名前:


ブーストビルド:

これはすべて、既存のビルド システムを boost-build から CMake に移行することの一部です。

ブーストビルド Jamfile は正常に動作します。

Jamroot:

cpp-netlib/Jamfile:

foo/Jamfile:

これは機能します。

boost::networkにはサブフォルダーがありますがcpp-netlib/boost/library、ヘッダーのみが含まれていますが、どこにも言及されていないことに注意してください。


質問:

cpp-netlib_picの pic バージョンを使用する必要があることを CMake に伝えるにはどうすればよいboost_networkですか?

0 投票する
1 に答える
3514 参照

c++ - -fPIC でライブラリをビルドするように CMake を構成する方法は?

指定された静的ライブラリを作成しようとしてい-fPICます。

これはうまくいきません。

ライブラリ ( ) は、フラグcpp-netlib_picなしでビルドされます。-fPIC

ただし、cpp-netlib_pic doに対してリンクする他のターゲットは-fPIC、コンパイラ フラグに追加されていますが、追加されていないため、リンクは失敗しますcpp-netlib_pic

ここfoo-fPIC追加されます:

make VERBOSE=1 でこれを証明しました

ここに注意してください-fPIC

fooを使用するターゲットをビルドするとcpp-netlib_pic、次のように-fPIC表示されます。

cpp-netlib_picで最初のライブラリ ( )をビルドするように CMake を構成するにはどうすればよい-fPICですか?

0 投票する
2 に答える
2077 参照

cmake - CMakeList.txt で 32 ビット x86 プロセッサを検出しますか?

が不足しているため、CMake メイクファイルでエラーを検出しています-fPIC。彼女は ci20 MIPS 開発ボードからのものです:

プロジェクトのポリシーは、レジスタのプレッシャーにより、32 ビット x86 を除くすべての場所で PIC を使用することです。つまり、x86_64、ARM-32、Aarch32、Aarch64、MIPS、MIPS64、UltraSparc などが PIC を取得します。

ターゲット プロセッサは で提供されていると思いますCMAKE_SYSTEM_PROCESSOR。私が抱えている問題は、ドキュメントが値を教えてくれないことです。そのため、「32 ビット x86 ではない」テストを作成する方法がわかりません。

CMakeList.txt で 32 ビット x86 プロセッサを検出するにはどうすればよいですか?

さらに良いことに、CMake が設定するプロセッサの包括的なリストを確認したいと思いますCMAKE_SYSTEM_PROCESSOR。誰かがリストを持っているなら、それを提供するのは素晴らしいことです.

0 投票する
2 に答える
1267 参照

c++ - g++ -fPIC が位置に依存しないコードを生成しない

トピックGCC -fPIC オプションを読みました

だから私は自分のtestlib.cppを作成しました。

g++ -c -o testlib.o testlib.cpp として コンパイルし、 g ++ -fPIC -c -o testlib.o testlib.cpp としてコンパイルすると、testlib.o の対応する objdumps は同一です。

objdump -d testlib.o -M intel

また、-fPIC を指定してコンパイルした場合、 jumpおよびjeコマンドの引数のアドレスは位置に依存しないと予想していました。したがって、2 つの objdump は異なるはずです。私は何を間違って理解していますか?