問題タブ [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 投票する
1 に答える
1048 参照

c++ - -fPIC フラグを指定して再コンパイルする

ビルドしたいプロジェクト(私のものではない)があります。バインドする必要がある c++ および Python モジュールがあります。cmake を起動すると、次のエラーが表示されます。

apt-get で antlr ライブラリをインストールし、理解したとおり、このライブラリを再コンパイルする必要がありますが、antlr ライブラリのソース コードのどの部分に -fPIC を配置する必要があるのか​​ わかりません。または、別の方法はありますか?

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

linker - libturbojpeg のコンパイルに関する問題 love-0.9.2

Löveから始めたばかりで、大好きです!現在、Ubuntu 14.04 でテストしています。

love 0.8.0 は問題なくコンパイルできましたが、bitbucket から 0.9.2 をコンパイルすると問題が発生します。どうやらグリーに食べられてしまったらしい…

次の理由により、リンク時にこのエラーが発生しましたlibturbojpeg

この StackOverflow エントリによると、デフォルトの libturbojpeg バイナリが apt-get 経由で Ubuntu にインストールされているようです:

は でコンパイルされていない-fPICので、そのソース コードを取得し、そのオプションを使用して再コンパイルし、löveのビルド プロシージャで何かを変更して、コンパイルされたものを指すようにする必要があると思います。

私は正しい方向に進んでいますか、それとも何かを見逃している可能性がありますか?

よろしく、トム

PD: この特定のケースで、なぜこのライブラリを -fPIC でコンパイルする必要があるのか​​ 疑問に思っています...

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

linux - g++ -shared -fPIC helloworld.cpp -o ./hw、コアダンプ

私は Linux の初心者です。次のコマンドで hello world を構築します。

./hw原因

なぜ?

うまくできた。

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

c++ - c/c++ 位置依存オブジェクトを位置非依存に変換

デバッグ シンボルを含むオブジェクト ファイルをコンパイルしましたが、ソースにアクセスできません。

このファイルを位置非依存に変換する方法はありますか?

「-fPIC」フラグを理解している限り、すべてのジャンプが相対的になります。このジャンプを修正してPICバイナリを作成するには、デバッグシンボルがあれば十分かどうか疑問に思っています。

そうでない場合は、この操作を実行できない理由を教えてください。

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

c - PIC共有ライブラリの異なる関数アドレス

私はファイルptr.cを持っています

として共有ライブラリを作成しました

次に、2 つのプログラム p1.c と p2.c から test を呼び出します。どちらも test を呼び出し、p1.c は test を呼び出した後にスリープして、両方の実行可能ファイルが一緒にアクティブであることを確認します。

テキスト セクションは共有されているため、テスト関数のアドレスは同じであると予想していました。

しかし、そうではありません、なぜですか?

編集:印刷されたアドレスは仮想アドレスだと思います。それが真の場合、実際のアドレスにマップされ、p1 と p2 の両方で同じになります。

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

linux - caffe が libgflags.a を -fPIC エラーで再コンパイルする

Linux Ubuntu 64 に Caffe をインストールしようとすると、エラーが発生します。エラーは次のとおりです。

/usr/bin/ld: /usr/local/lib/libgflags.a(gflags.cc.o): 再配置 R_X86_64_32S に対する `.rodata' は、共有オブジェクトを作成するときに使用できません。-fPIC で再コンパイル
/usr/local/lib/libgflags.a: シンボルの追加中にエラーが発生しました: 値が正しくありません

gflags ライブラリを で再コンパイルしようとしまし-fPICたが、エラーは次のように変わりました。

src/caffe/common.cpp: 関数 'void caffe::GlobalInit(int*, char***)':
src/caffe/common.cpp:35:5: エラー: '::gflags' が宣言されていません
::gflags::ParseCommandLineFlags(pargc, pargv, true);

また、caffe の CMakeCache.txt を変更して を設定しようとしましたが、-fPICどちらも機能しません。

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

c++ - 常に fpic (Position Independent Code) を使用しないのはなぜですか?

PIC に関するこの投稿を読みましたが、常に PIC を使用するのが良いようです (exe / static / share library の場合はいつでも)。

では、デメリットは?
PIC を使用しない場合の詳細な例はありますか?

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

ubuntu - Ubuntu 12.04 LTS での darktable 1.6.7 のビルド エラー

Ubuntu 12.04 LTS のソースからイメージ プログラム darktable 1.6.7 をビルドしようとしています。ここの指示に従っています。約 85% に、解釈方法がわからないエラーがあります。

-fPIC示唆されているように、どこを通過すればよいかわかりません。--enable-sharedに渡す必要があることも読み./configureましたが、この場合は./configureファイルがなく、同等のステップがここにあるのかわかりません。このエラーを理解して解決するための助けをいただければ幸いです。