問題タブ [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.
makefile - ROOT インストール エラー: -fPIC で再コンパイル
私は今、から入手可能なROOTパッケージをインストールしようとしています
後./configure, make
; 以下のようなエラーが発生しました。
私はこの問題について本当にたくさん読んだ。64 ビット マシンで 32 ビット ソフトウェアを実行していることが原因のようで、-fPIC で再構成する必要があります。だから走ってみた
CFLAGS="-O3 -fPIC" ./configure
またはmakefile
Add inside を介して gcc フラグを渡すに従って。bashrc
、 私は追加します:
ただし、どれも機能しません。
これは本当に私を夢中にさせます....私のケースと他のケースの違いだけがここにあります私はPython2.6に問題がありますが、他のライブラリには問題があります...
誰でも私を助けることができますか....
c++ - ブーストテストfpicリンクエラー
私はこれをじっと見つめていますが、自分が何をしたのかわかりません。
32ビットマシンで作業中のプロジェクトがあります。リポジトリを64ビットマシン(プロジェクトの元の開発マシン)にプルしましたが、テストバイナリをビルドしようとすると、次のリンクエラーが発生します。
何が変わったのか本当にわかりません。Boostライブラリはubuntuリポジトリから直接取得されます。手がかりを持っている人。
gcc - libstdc++ を静的にリンクして共有ライブラリを作成すると失敗する
64 ビット x86 マシンで gcc 4.5.1 を使用して、最初に次のように ao を作成します: g++ -fPIC -c a.cc -o ao
次に、次のように liba.so を作成してみてください: g++ -static-libstdc++ -shared -W1,-soname,liba.so -o liba.so.1.0.0 ao
次の情報で失敗しました: 再配置 R_X86_64_32S に対する `vtable for __gnu_cxx::stdio_filebuf >' は、共有オブジェクトを作成するときに使用できません。-fPIC で再コンパイル
-fPIC を追加して libstdc++ ライブラリを再コンパイルしようとしましたが、とにかく失敗しました
c++ - 位置に依存しないコードを使用した値渡しおよびポインター渡し
私は、特に gcc with を使用して、位置に依存しないコードで行ういくつかのことを理解しようとしてい-fpic
ます。
私は、スタック上でポインタを何度も渡すのにかかる時間を測定し、コピーを渡すことで同じことを行う関数を作成しました。私の例では、継承や仮想関数のない構造体または単純なクラスでのみ効果が見られます。
PIC を使用すると、ポインターが (少し) 遅くなるのはなぜですか? また、PIC を使用しない場合と比較して、コピーがはるかに高速になるのはなぜですか?
私-03
もコンパイルしています。
assembly - スクラッチせずにすべてのレジスタを保存する
別のプログラムをブートストラップするプログラムを開発しているため、プログラムに渡されるレジスタを保存して、ロードされているはずのプログラムにジャンプする前にそれらを復元できるようにする必要があります。これはベア メタル システムであり、OS も MMU もありません (存在しますが、現時点では使用されていません)。
これが私のコードです。テストするアームボードがなく、すぐに提出する必要があるため、コードが正しいかどうかを知りたいだけです。
また、PC 相対ストアがソース レジスタの下位レジスタ (r0-r7) のみを使用できることも事実です。これは、命令幅が限られているために、特定の命令で上位レジスタにアクセスできないという単なる親指の問題だと思いました。
gcc - Code::Blocksで--enable-sharedまたは-fPICのいずれかを適用します
質問が述べているように、私はそれらのコンパイラ/リンカー設定のいずれかを適用する必要があります。私はCode::Blocks10.05を使用しています。すべてのビルド設定画面を確認しました。これらの設定を適用する場所が見つかりません。出力で次のようになります。
g++ - g++ で共有可能な .o ファイルをコンパイルできない
次のコマンドでコンパイルすると:
g++ -fPIC -o obj/buffer.o buffer.cpp
次のエラーが表示されます。
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../x86_64-linux-gnu/crt1.o: 関数
_start': (.text+0x20): undefined reference to
内 main'
-fPIC フラグを使用していると思われますが、メイン関数は必要ありませんでした。すべての cpp ファイルでこのエラーが発生します。共有ライブラリ関数を含む main.cpp があります。ソースコードは次の場所で入手できます。
何か案は?ld バイナリを使用してすべての o ファイルを an に配置できることを知っているので、それらが完了したら、それらすべてを共有可能な .o ファイルに構築するための助けが必要です。
linker - スタティック ライブラリの fPIC コード: なぜですか? 何が起こるのですか?
位置独立コードをスタティック ライブラリに配置するとどうなりますか? (特に、x86-64 では)
つまり、いくつかの.o
ファイルが PIC で生成され、.a
ファイルに配置されます。これ.a
は、通常どおり最終的な実行可能ファイルに静的にリンクされます。
動作しているように見えますが、これを行う意味はありますか? なんで?
最終的なアドレス計算は何をしますか? (リンク時? 実行時?)
ありがとうございました
static - 静的ライブラリにリンクされた共有ライブラリ:再配置エラー
移植性の理由から、gfortranを使用して共有ライブラリを作成し、静的バージョンのlibgfortranとリンクさせたいと思います。残念ながら、私はさまざまなオブジェクトを適切にリンクすることができません。同様の問題に対処する投稿をすでにいくつか見つけましたが、問題を解決する方法がわかりませんでした。
私のソースファイルはすべて-fPIC
フラグを付けてコンパイルされています。-shared
オブジェクトをフラグとにリンクしようとすると-static-libgfortran
、次のエラーメッセージが表示されます。
サーバー上で最初からコンパイルしたgfortran4.6.3を使用しています。インストールはスムーズに実行され、標準構成は変更しませんでした。古い投稿で、コンパイラをで構成する必要があることがわかりました--with-pic
が、このフラグはGCCマニュアルに記載されていません。
問題はコンパイラーに起因するのでしょうか、それとも異なるオブジェクトをリンクしようとしている方法に起因するのでしょうか?どうすればこれを修正できますか?
よろしくお願いします!
c++ - `-fpic` が有効な場合、g++ がこのコンストラクター関連の noexcept 警告を発行しないのはなぜですか?
次のコードがあります:
次のオプションを使用すると、
-fno-pic -fmessage-length=0 -std=c++0x -Wnoexcept
g++ は次の警告をスロー します。
しかし、-fpic
代わりに使用すると-fno-pic
g++
警告がスローされないのはなぜですか?
編集:
GCC バージョン - 4.7.2