Movatterモバイル変換


[0]ホーム

URL:


BLOGTIMES

cles::blog

平常心是道
« :: »
2008/12/30

_intel_fast_memsetや_intel_fast_memcpyのエラーが出るときは

  icc  linux  c  intel 
このエントリーをはてなブックマークに追加

プライベートなテスト環境にiccをインストールして使っているのですが、MySQLをiccを使ってリコンパイルしてみたら、libmysqlclientを使うプログラムがundefined symbol: _intel_fast_memsetというエラーを吐いて落ちるようになってしまいました。

どう考えてもicc周りのトラブルのようなのですが、解決方法がなかなか見つけられなくて困りましたが、下記のicc 8.0のリリースノートの情報で何とか解決することができました。

Linux 版インテル(R) C コンパイラ 8.0 リリースノート

高速メモリ Copy ルーチン

コマンドラインで -nostdlib を指定した場合やインテル C コンパイラのドライバからではなく、直接リンカを呼び出したことにより、標準のインテル・ライブラリに対してリンクが行われない場合の問題について次に説明します。

インテル C コンパイラは、_intel_fast_memcpy と _intel_fast_memset の 2 つのルーチンを使用して、ソースコードでは __builtin_memcpy と __builtin_memset にマクロ展開されていない memcpy 演算と memset 演算を行います。これらは、libirc にあります。gcc コンパイラを使用してアプリケーションをリンクしたり、リンカ ld を直接呼び出すと、これらの 2 つのルーチンが未解決のシンボルになります。このため、コンパイル・フェーズで使用したコンパイラ・オプションと同じものを使用して、インテル C コンパイラでリンクすることを推奨します。ただし、これらのルーチンを未定義の外部参照とみなす場合は、-lirc をリンク行に追加するか、または memcpy および memset が組込み形式にマクロ展開されるようにインクルードを変更して、再コンパイルします。IA-32 ベース・アプリケーション用インテル C コンパイラは、任意のプログラムのメインルーチンから intel_proc_init ルーチンを呼び出し、プロセッサが正しく設定されるようにします。また、このルーチンは libirc にも含まれています。これらのルーチンは glibc からのエントリポイントを使用するので、コマンドラインでは -lirc を -lc の前に配置する必要があります。

つまり、iccを使って作ったライブラリをiccを使わずにリンクするとこれらのシンボルが未解決のままになってしまうようです。このリリースに書かれているとおり、リンク時のオプションに-lircを加えてやると正常に動くようになりました。

そのほかの解決方法

再コンパイルが困難な場合には、環境変数LD_PRELOAD を使ってライブラリを強制的にロードしてあげると言う方法もあります。

LD_PRELOAD=/opt/intel/Compiler/11.0/074/lib/ia32/libirc.so ./a.out

    byhsur at 20:28[4年前][3年前][2年前][1年前][1年後][2年後][3年後][4年後][5年後] |
    こんな記事もあります 「インテル memcpy memset
    s6 という djb daemontools に似た軽量プロセス管理 daemon
    ペルチェ素子を搭載した簡易水冷
    Type 22110 の M.2 SSD?
    R430 の CPU を E5 v4 にアップデートする前に
    Intel SSD DC P4510 8TB
    Corei5-9600K の PC を組み立てた
    来年、進学等で PC などが必要な場合には早めの準備を
    3D XPoint(Optane)時代の幕開け?
    SoftEther を AES-NI を有効にしてビルドする
    Intel ARK に Android 版があった
    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2864
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL:Yahoo! JAPAN IDでログイン

    « :: »
    Copyright © 2004-2023 by CLES All Rights Reserved.
    サイト内検索
    検索ワードランキング
    へぇが多いエントリ
    閲覧数が多いエントリ
    1 .アーロンチェアのポスチャーフィットを修理(100540)
    2 .福岡銀がデマの投稿者への刑事告訴を検討中(99859)
    3 .年次の人間ドックへ(99818)
    4 .三菱鉛筆がラミーを買収(99411)
    5 .2023 年分の確定申告完了!(1つめ)(99386)
    最新のエントリ
    cles::blogについて
    誰が書いてる?
    最近行った場所
    サイトポリシー
    タグ一覧
    検索ワードランキング

    Referrers

      Powered by CLES
      Nucleus CMS v3.31SP3/w memcached
      21393795(W:4454 Y:1531 T:0061)
      cles::blogのはてなブックマーク数
      benchmark


      [8]ページ先頭

      ©2009-2025 Movatter.jp