• ベストアンサー

LMがリンクしている全モジュール名の調べ方

OS : HP-UX R13 言語 : C コンパイラ : aCC LM(ロードモジュール)にリンクされているモジュールをリストアップする方法があったような 覚えがあるのですが思い出せません。 どなたかご存じありませんでしょうか? 私は静的ライブラリ(*.a)の提供者で、LM作成者は別の人間、提供しているライブラリ中のどのモジュールが 使われているのかを調べたい、といった状況です。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

HP-UX は知りませんが, ldd とか nm とかを駆使してできないかなぁ?

1qazxsw2
質問者

お礼

nm -g でできました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • インタプリタはロードモジュールを作成する?

    情報システムを勉強し始めた初心者です。 私の持っているテキストには以下のように書いてあります。 ・「ソースプログラム」を「ロードモジュール」に変換するプログラムが「言語プロセッサ」。 ・「言語プロセッサ」には「コンパイラ」や「インタプリタ」が使われる。 つまり、コンパイラもインタプリタもロードモジュールを作成するものだと思っていました。 しかし、以下のような問題がありました。 問題: インタプリとは、高水準言語で書かれた原子プログラムを、機械語のプログラムに翻訳してロードモジュールを作成するプログラムである。 答え: 間違い。インタプリタではなく、コンパイラの説明になっている。 つまり、インタプリタはロードモジュールを作成しないということなのでしょうか? どなたかご教授お願いいたします。

  • ダイナミックリンクとスタティックリンクについて

    現在、コボル言語を使用してプログラム開発を行っております。 コンパイルしたロードモジュールがダイナミックリンクかスタティックリンクかとの質問をされているのですが、そもそもダイナミックリンクとスタティックリンクとはどういうことですか?教えてください。 よろしくお願いします。

  • ライブラリファイルのリンク (リリースバージョン時)

    VisualC++ 2005 Express Editionでライブラリファイル(.lib)をリリースバージョンでビルトし、違うプログラム(デバックバージョン)でライブラリファイルをリンクしたとき 1>コンパイルしています... 1>main.c 1>リンクしています... 1>CheckMemory.lib(check_memory.obj) : MSIL .netmodule または /GL を伴ってコンパイルされたモジュールが見つかりました。/LTCG を使用して再開始してください。リンカのパフォーマンスを向上させるためには、コマンドラインに /LTCG を追加してください。 1>LINK : warning LNK4075: /INCREMENTAL は /LTCG の指定によって無視されます。 1>LINK : warning LNK4098: defaultlib 'MSVCRT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 と出るのですが、これはどうゆうことなのでしょうか? 分かる方いらっしゃいますか?お願いします。 ちなみにライブラリファイルは簡易メモリチェックプロブラムでデバック時のみ使用したいと考えているプログラムです。 使用言語はc言語です。 文章下手ですみません^^;

  • 静的/動的リンクライブラリについて

    Pythonのctypesを使っていてふと気になったので質問させていただきます。 Cと少々Java、程度の経験しかなかった私にとって、ctypesによって「Cのデータ型を利用できる」「dllをロードして、エクスポートされている関数を使用できる」というのは衝撃でした。 しかし、考えてみれば、仕組みとして理解できなくもない・・・かな?と現在は思っています。 ただ気になったのは、  ・どうして静的リンクライブラリ(.lib)の方は対応してないの? ということです。 [質問1]これは原理的に不可能なのでしょうか、それともctypesやPythonの仕様としてできないだけなのでしょうか。 (おそらくは「原理的に不可能」なのだろう、と個人的には思っておりますが・・・。) 以下は私の中の解釈ですが、 ・マシン語として実行可能な形式になっているdllは、実行時のリンクの機構さえ整っていれば別にC言語でなくともロードや中身のコードを利用することはできる。 ・また、Cのデータ型についても、要は型のバイト数やフォーマット(つまり内部的な扱われ方)をPythonインタプリタが押さえていれば良い話であるから、PythonでCの型を使用することは原理的に可能。 さて、 [質問2]それではlibはどうか。 libもコンパイル済みのものであるなら、Python(またはC以外の言語)からlib内のコードを利用することはできるのではないか? どちらかのみの回答でも結構です。 また、解釈の誤りについてのご指摘や、リンクライブラリの仕組みを解説したページを教えてくださると助かります。 よろしくお願いします。

  • CとFortranのコードを併用する方法

    昔からあったと思いますが、最近CとFortranを併用することを考えています。片方の言語で関数とかサブルーチンを作っておいてコンパイルしてオブジェクトをだけを作成し、もう片方の言語でそれを呼び出してコンパイル時にリンクして使用するという風に考えています。コンパイラの組み合わせが何でもいいとは思えないのですが、どのようにするものでしょうか。あるいはコンパイラ以外のツールが必要だとか。コンパイラは両言語ともGNU, intelなど提供元をそろえる必要があるとか、そういうことになるのでしょうか。よろしくお願いします。

  • ライブラリのリンクについて。

    ふと、疑問に思ったので質問させてもらいます。 C言語などでプログラムを作る時、ライブラリをリンクさせて使うと思いますが、その場合プログラムを実行させた場合メモリー上ではどうなるのか教えた貰いたいです。 例えばprintf関数を使う場合その命令そのものがプログラムに組み込まれてメモリーに読み込まれているのかということです。 前にどこかで読んだ記憶があるのですが、いろいろなところから呼び出される標準的なものはシステムで一箇所にありそれを使うなどということがあったような無かったような記憶があやふやですが見た覚えがあるので気になってしまいました。 あとライブラリなどから一つだけ関数を使う場合、使わない他の関数などもメモリーに読み込まれていたりするのでしょうか? よく使う自分で作った関数を一つのファイルにまとめ、それを定義したヘッダーファイルをincludeした場合も同様で使わないほかの関数はどうなるのでしょうか?

  • Windows+postgreSQL+C言語によるDB接続モジュールの開発環境について

    現在、以下の開発環境を構築しています。 OS:Windows XP SP2 データベース:PostgreSQL 8.1.4 C言語コンパイラ:LSI C-86 Ver 3.30 エディタ:CPad for LSI C-86 Version 2.31 libpqライブラリ、ヘッダファイル取得元: http://www.interwiz.koganei.tokyo.jp/software/PostgreSQL/windows.html データベースの作成、操作を正常に行えることを確認しています。 また、C言語によるテストモジュール(printf()関数によるHello world等 の文字出力、DB接続処理は無し)の作成が行えることも確認済です。 これらの確認が済んだ後に、以下の手順を行いました。 ・取得したlibpqライブラリを (コンパイラ配置フォルダ配下)\LIB\S ディレクトリ配下にlibpqdll.libを配置。 ・コンパイラの_LCCファイルに-llibpqdllを追記。 (-Lオプションで(コンパイラ配置フォルダ配下)\LIBが 指定されているのを確認済) ・コンパイラの_LCCファイルで、-Iオプションで指定したディレクトリに postgres_ext.h、libpq-fe.hを配置。 そこで、PQsetdbLogin()関数とPQfinish()関数を用いた DB接続テスト用ソースコードhoge.cを作成し、エディタ経由でコンパイルをした ところ、 以下のエラーが発生しました。 (コンパイラ配置フォルダ配下)\LIB/s/libpqdll.lib: Not a library file hoge.obj(hoge.c): Undefined symbol: PQfinish_ hoge.obj(hoge.c): Undefined symbol: PQsetdbLogin_ (コンパイラ配置フォルダ配下)\LIB/s/libpqdll.lib: Not a library file エラーの原因は、ライブラリファイルが認識されないことと推測していますが、 何故、認識されないのかが分かりません。 ご教授お願い致します。

  • 選択リストのリンク化

    はじめまして、こんにちは。 現在CGIによる検索フォームを作成中なのですが、 例えば、 ・フォーム(1)から車のメーカーを選択すると  フォーム(2)に形状(ワゴン等)が選択可能になり  形状を選択するとフォーム(3)に車の名前が表示される  ような物を作りたいです。 メーカー等はサーバーにフォルダで区切られており、 登録する車が増えた場合フォルダを増やすとweb上に反映できるようにしたいです。 フォルダ階層 トヨタ-1BOX-アルファード ←フォルダ         -ハイエース  ←フォルダ    -ステーション-イプサム ←フォルダ        ・        ・        ・ ↑↑↑↑ このようにフォルダ階層でひも付いているものをそのままweb上でリンクリストととして選択できるようにしたいのですが可能でしょうか? サーバー:HP-UX 開発言語:Perl 以上、参考サンプルのURLでも構いませんので、 ご回答の程よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • Fortranのバージョンアップと古いソースコード

    Fortranは科学技術計算の古い資産が使えるということでまだ使われていると思います。 しかも、コンパイラ・リンカは製品としてバージョンアップしているわけですが、新しくなっても古いコードはコンパイル・リンク・実行できると思っていました。最近、intel fortranの更新をしたのですが、動作がかなり違ってきました。F77,F90,F95などの更新ではなく、intel社の製品としての最新版への更新です。コンパイル・リンクまでは行くのですが、実行させたとたん、ゼロ割のようなメッセージが出て、実行が打ち切られてしまいます。1時間ぐらい走るプログラムなのですが、1秒で打ち切りでした。必ずそうなるということではありません。特定のライブラリで生じます。そのライブラリは古い(言語としてはF77)ので当然ながら新しいコンパイラで動くなどと書いていません。ただソースコードの塊であり、古いコンパイラでは動いていたのです。古いと行っても2009年ぐらいに買ったintel visual fortran ver.11ぐらいのもので2016年のコンパイラと大幅な変更はないはずなのですが。例えば最新版(2016年2月時点)の方は並列関係の設定の方がデフォルトで並列計算しない設定をコンパイラオプションで指定しないとおかしくなるということでしょうか(たぶんGPUには対応していないと思いますが)。どっかに書いてあるかなと思案していますが。 何か心当たりがあればよろしくお願いします。

  • Unsatisfied code symbol エラーについて

    UNIX上でcのプログラムを作成しています。 OSはHP-UX B.11.23 U ia64 (td)です。 共有ライブラリ(~.sl)を作成したのですが、 これを実行モジュール(a.out)にリンクしてコンパイルして、a.outを実行すると、 エラーになってしまいます。 エラーの内容は、 /usr/lib/hpux64/dld.so: Unsatisfied code symbol 'xxxxx' in load module '/.../...~/a.out'. というもので、ライブラリ内にあるはずのxxxxxをa.outで使用しているのですが、 これが見つからないというエラーのように思えます。 ライブラリ内にはいくつか関数を用意していて、そのほかの関数は普通に使えています。 ライブラリを作成するときにincludeファイルを用意していますが、 その中でexternで関数の宣言をしていて、 xxxxxが他の関数と異なった設定をしているとは思えません。 このような場合、エラーの原因としてどのようなことが考えられるでしょうか? ほとほと困っています…。 どなたか解決方法をご教授願います。 またライブラリに含まれる関数を表示させるUNIXコマンドってありましたでしょうか? もしご存知でしたらあわせて教えていただけると助かります。 何か必要な情報で書き足りないものがありましたら、補足いたしますのでご指摘ください。 よろしくお願いいたします。

このQ&Aのポイント
  • ハイセンステレビ55U8Fは外付けHDDの対応機種ではありません。
  • ハイセンステレビ55U8FにはリモコンやUSBポートの設定を確認する必要があります。
  • ロジテックLHD-ENUU3Wはハイセンステレビ55U8Fに接続することができません。
回答を見る