タグ

ブックマーク / aki-yam.hatenablog.com (2)

  • あるシンボルが どのオブジェクトファイル/共有オブジェクトに含まれているか検索するスクリプト - akihiko’s tech note

    プログラミングしていると,あるシンボル(変数名,関数名,クラス名,etc.)がどのオブジェクトファイル(or アーカイブファイル)や共有ライブラリで定義されているか,調べたいことがある(どのファイルをリンクすればいいかわからないときなど).通常はシンボル名でググればよろしい.だが,稀に,ググるのでは解決できないことがある.そのような場合の対処法として,無理矢理 /usr/lib や /lib にあるライブラリファイルを検索する方法を紹介する. ライブラリの種類 予備知識なので,読み飛ばしても可. プログラムをコンパイルして生成されたオブジェクトファイル (*.o) をコマンド ar でアーカイブすると,アーカイブファイル (*.a) ができる.これが,静的ライブラリ (static library).実行ファイルの生成時に静的にリンクされるため,実行時にはアーカイブファイルは不要. 一方,

    あるシンボルが どのオブジェクトファイル/共有オブジェクトに含まれているか検索するスクリプト - akihiko’s tech note
    atotto
    atotto 2013/09/20
    むふふむと読んでたら師匠のブログだった
  • C と C++の間で関数や変数を共有する - akihiko’s tech note

    C++ で実装した関数を C から利用したい場合,あるいはその逆の場合がある.同じソースの中に両方のプログラムコードを書くことはできないが,それぞれのソースをコンパイルしてオブジェクトファイルを生成し,それらをリンクすることは可能だ.ただし C++ 特有の名前空間 (namespace) や関数オーバーロードに対処する必要がある. 以下ではコンパイラに gcc-4.3 / g++-4.3 を利用している.環境は debian/linux. introduction... 簡単なプログラムの場合は,図(a)のようにひとつのソースコードをコンパイルして実行ファイル (*.out / *.exe) を生成している.しかし,プログラムの規模が大きくなった場合,ライブラリを作る場合,何人かで共同開発する場合などでは,図(b)のようにソースを小分けして個別にコンパイルしてオブジェクトファイル (*.o

    C と C++の間で関数や変数を共有する - akihiko’s tech note
    atotto
    atotto 2008/12/10
    CとC++でプログラミング
  • 1