問題タブ [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.
c++ - -fPIC フラグを指定して再コンパイルする
ビルドしたいプロジェクト(私のものではない)があります。バインドする必要がある c++ および Python モジュールがあります。cmake を起動すると、次のエラーが表示されます。
apt-get で antlr ライブラリをインストールし、理解したとおり、このライブラリを再コンパイルする必要がありますが、antlr ライブラリのソース コードのどの部分に -fPIC を配置する必要があるのか わかりません。または、別の方法はありますか?
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 でコンパイルする必要があるのか 疑問に思っています...
linux - g++ -shared -fPIC helloworld.cpp -o ./hw、コアダンプ
私は Linux の初心者です。次のコマンドで hello world を構築します。
./hw
原因
なぜ?
うまくできた。
c++ - c/c++ 位置依存オブジェクトを位置非依存に変換
デバッグ シンボルを含むオブジェクト ファイルをコンパイルしましたが、ソースにアクセスできません。
このファイルを位置非依存に変換する方法はありますか?
「-fPIC」フラグを理解している限り、すべてのジャンプが相対的になります。このジャンプを修正してPICバイナリを作成するには、デバッグシンボルがあれば十分かどうか疑問に思っています。
そうでない場合は、この操作を実行できない理由を教えてください。
c - PIC共有ライブラリの異なる関数アドレス
私はファイルptr.cを持っています
として共有ライブラリを作成しました
次に、2 つのプログラム p1.c と p2.c から test を呼び出します。どちらも test を呼び出し、p1.c は test を呼び出した後にスリープして、両方の実行可能ファイルが一緒にアクティブであることを確認します。
テキスト セクションは共有されているため、テスト関数のアドレスは同じであると予想していました。
しかし、そうではありません、なぜですか?
編集:印刷されたアドレスは仮想アドレスだと思います。それが真の場合、実際のアドレスにマップされ、p1 と p2 の両方で同じになります。
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
どちらも機能しません。
c++ - 常に fpic (Position Independent Code) を使用しないのはなぜですか?
PIC に関するこの投稿を読みましたが、常に PIC を使用するのが良いようです (exe / static / share library の場合はいつでも)。
では、デメリットは?
PIC を使用しない場合の詳細な例はありますか?
ubuntu - Ubuntu 12.04 LTS での darktable 1.6.7 のビルド エラー
Ubuntu 12.04 LTS のソースからイメージ プログラム darktable 1.6.7 をビルドしようとしています。ここの指示に従っています。約 85% に、解釈方法がわからないエラーがあります。
-fPIC
示唆されているように、どこを通過すればよいかわかりません。--enable-shared
に渡す必要があることも読み./configure
ましたが、この場合は./configure
ファイルがなく、同等のステップがここにあるのかわかりません。このエラーを理解して解決するための助けをいただければ幸いです。