- blogs:
- cles::blog
2008/12/30
[ by hsur at 20:28]
_intel_fast_memsetや_intel_fast_memcpyのエラーが出るときは
プライベートなテスト環境に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
このエントリは役に立ちましたか?
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→http://blog.cles.jp/item/2864
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
Copyright © 2004-2010 by CLES All Rights Reserved.
sp-20100319221908644595552@cles.net
sp-20100319221908644595552@cles.net
サイト内検索
おしらせ
検索ワード
- intel_fast_memcpy
- Google - 10/03/19 17:00:37
- _intel_fast_memset
- Google - 10/03/19 12:32:09
- gcc intel_fast_memset
- Google - 10/03/18 22:34:52
- intel_fast_memcopy
- Yahoo! - 10/03/18 10:39:48
- intel_fast_memcpy
- Yahoo! - 10/03/18 10:27:57
- _intel_fast_memset
- Google - 10/03/17 23:26:09
- _intel_fast_memset
- Google - 10/03/16 18:21:21
- intel_fast_memcpy
- Google - 10/03/12 17:05:17
- intel_fast_memcpy
- Google - 10/03/11 15:05:41
- intel_fast_memcpy
- Google - 10/03/11 15:05:21
- intel_fast_memcpy エラー
- Google - 10/03/11 15:03:31
- intel_fast_memcpy
- Google - 10/03/11 15:03:03
- _intel_fast_memset
- Google - 10/03/01 21:58:11
- intel_fast_memset
- Google - 10/03/01 20:47:34
- _intel_fast_memset
- Google - 10/02/25 14:50:50
Tags [All Tags]
google | php | ruby | windows | firefox | linux | SoftwareEngineering | java | spam | ranking | curry | camera | seo | FireEmblem | thunderbird | server | marketing | mobile | Doctoral | docomo
へぇが多いエントリ [Top 100]
- おめでとうございます (4)
- 知恵の輪 サターン編 (3)
- SourceForge.JPのSubversion... (3)
- 人生初の出来事 (3)
- サーバセットアップ (3)
- 和食 小錦 (3)
- 散髪しました (3)
- .inはインドのccTLDなのか (3)
- やっと髪をきりました (3)
- 大雪でした (3)
閲覧数が多いエントリ [Top 100]
1 . ドラゴンクエストVIの影響力 [8963x]
2 . やっぱりあった!パクれる読書感想文! [7622x]
3 . Echofon for Firefox [6387x]
4 . OpenIDで自分のサイトのURLを使う [5756x]
5 . 急性胃腸炎 [5743x]
2 . やっぱりあった!パクれる読書感想文! [7622x]
3 . Echofon for Firefox [6387x]
4 . OpenIDで自分のサイトのURLを使う [5756x]
5 . 急性胃腸炎 [5743x]
最新のエントリ [archives]
最新のコメント [Latest 100]
- CD-ROM起動で、HDDを完全消去
- NP_Moblog v1.16
- pinzoro 01/15
- hsur 12/29
- and more...
- 耳がおかしいと思ったら突発..
- baca 01/13
- hsur 01/13
- and more...
カテゴリ別エントリ
cles::blogについて
Syndicate
Calendar
Referrers
Blog People
Admin
★はてな認証APIをつかってログインすることができます。
Powered by NP_Paint




