アプリ版:「スタンプのみでお礼する」機能のリリースについて

Linuxでプログラミングをしております。
/usr/loca/libの静的、動的ライブラリを使用したいと思っているのですが、32bit,64bitが混在しており、どれを使えば良いのかわからない状況です。
ライブラリをコンパイルした環境(コンパイラなど)を確認する方法はありますでしょうか?
ご存知の方おられましたらご教授よろしくお願いします。

A 回答 (3件)

objdump コマンドを使えば、32bit と 64bit の判別は可能です。



$ objdump -a /usr/lib/libpng.so.3

/usr/lib/libpng.so.3: file format elf32-i386
/usr/lib/libpng.so.3

$ objdump -a /usr/lib64/libpng.so.3

/usr/lib64/libpng.so.3: file format elf64-x86-64
/usr/lib64/libpng.so.3


readelf コマンドでも判別できます。

$ readelf -h /usr/lib/libpng.so.3

ELF Header:
Class: ELF32
Machine: Intel 80386

$ readelf -h /usr/lib64/libpng.so.3

ELF Header:
Class: ELF64
Machine: Advanced Micro Devices X86-64
    • good
    • 1
この回答へのお礼

ありがとうございます!助かりました。

お礼日時:2015/10/26 01:45

「ライブラリが32bitか64bitのどちらでコンパイルされたのかが知りたい」が


・ライブラリが 32bit 環境の上でコンパイルされたのか 64bit 環境の上でコンパイルされたのか
・ライブラリが 32bit 環境向けにコンパイルされたのか 64bit 環境向けにコンパイルされたのか
のどちらを意図しているのか読み取りにくいのですが, 後者であれば file でわかるはずです. 前者はそもそも意味のない情報だしバイナリには残らないかもしれない.

あと, コンパイラのバージョンもバイナリには残らない可能性があります. とりあえずチャレンジとしては string で調べてみる, かなぁ.

あ, どちらも使い方はマニュアルで調べてください.
    • good
    • 0
この回答へのお礼

ありがとうございます!参考になりました。

お礼日時:2015/10/26 01:45

どのような目的で「ライブラリをコンパイルした環境」を確認したいのでしょうか?



「32bit,64bitが混在しており、どれを使えば良いのかわからない状況です」という文章からすると「32bit 環境でコンパイルされたのか 64bit 環境でコンパイルされたのかを知りたい」ということでしょうか? でも, それを知ったとしても「どれを使えば良いのか」には直結しませんよ.
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
どのライブラリを使うかはわかっているのですが、そのライブラリが32bitか64bitのどちらでコンパイルされたのかが知りたいということです。
またコンパイラのverなどもわかるとありがたいです。
もし、やり方をご存知でしたら教えていただけますでしょうか?

お礼日時:2015/08/21 17:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています