{"id":16739,"date":"2024-09-20T16:37:13","date_gmt":"2024-09-20T07:37:13","guid":{"rendered":"https:\/\/blog.antenna.co.jp\/ILSoft2\/?p=16739"},"modified":"2024-09-20T16:37:13","modified_gmt":"2024-09-20T07:37:13","slug":"%e4%b8%8a%e4%bd%8d%ef%bc%88%e5%89%8d%e6%96%b9%ef%bc%89%e4%ba%92%e6%8f%9b%e6%80%a7%e3%83%bb%e4%b8%8b%e4%bd%8d%ef%bc%88%e5%be%8c%e6%96%b9%ef%bc%89%e4%ba%92%e6%8f%9b%e6%80%a7%e3%81%a8%e3%81%84%e3%81%86","status":"publish","type":"post","link":"https:\/\/blog.antenna.co.jp\/ILSoft2\/archives\/16739\/","title":{"rendered":"\u4e0a\u4f4d\uff08\u524d\u65b9\uff09\u4e92\u63db\u6027\u30fb\u4e0b\u4f4d\uff08\u5f8c\u65b9\uff09\u4e92\u63db\u6027\u3068\u3044\u3046\u8a00\u8449\u306e\u610f\u5473"},"content":{"rendered":"<h2>GCC\u306elibstdc++\u306e\u30de\u30cb\u30e5\u30a2\u30eb\u3088\u308a<\/h2>\n<p><a href=\"https:\/\/gcc.gnu.org\/onlinedocs\/libstdc++\/manual\/abi.html\">https:\/\/gcc.gnu.org\/onlinedocs\/libstdc++\/manual\/abi.html<\/a><\/p>\n<h3>Versioning\/Goal\u3000\uff08\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\/\u76ee\u6a19\uff09<\/h3>\n<blockquote><p>Versioning gives subsequent releases of library binaries the ability to add new symbols and add functionality, all the while retaining compatibility with the previous releases in the series. Thus, program binaries linked with the initial release of a library binary will still run correctly if the library binary is replaced by carefully-managed subsequent library binaries. This is called <strong>forward compatibility<\/strong>.<\/p><\/blockquote>\n<p>\uff08\u4e0a\u8a18\u5f15\u7528\u306eGoogle\u7ffb\u8a33\uff09<br \/>\n\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u306b\u3088\u308a\u3001\u30e9\u30a4\u30d6\u30e9\u30ea \u30d0\u30a4\u30ca\u30ea\u306e\u5f8c\u7d9a\u306e\u30ea\u30ea\u30fc\u30b9\u306b\u3001\u30b7\u30ea\u30fc\u30ba\u306e\u524d\u306e\u30ea\u30ea\u30fc\u30b9\u3068\u306e\u4e92\u63db\u6027\u3092\u7dad\u6301\u3057\u306a\u304c\u3089\u3001\u65b0\u3057\u3044\u30b7\u30f3\u30dc\u30eb\u3092\u8ffd\u52a0\u3057\u305f\u308a\u6a5f\u80fd\u3092\u8ffd\u52a0\u3057\u305f\u308a\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30e9\u30a4\u30d6\u30e9\u30ea \u30d0\u30a4\u30ca\u30ea\u306e\u6700\u521d\u306e\u30ea\u30ea\u30fc\u30b9\u306b\u30ea\u30f3\u30af\u3055\u308c\u3066\u3044\u308b\u30d7\u30ed\u30b0\u30e9\u30e0 \u30d0\u30a4\u30ca\u30ea\u306f\u3001\u30e9\u30a4\u30d6\u30e9\u30ea \u30d0\u30a4\u30ca\u30ea\u304c\u614e\u91cd\u306b\u7ba1\u7406\u3055\u308c\u305f\u5f8c\u7d9a\u306e\u30e9\u30a4\u30d6\u30e9\u30ea \u30d0\u30a4\u30ca\u30ea\u306b\u7f6e\u304d\u63db\u3048\u3089\u308c\u305f\u5834\u5408\u3067\u3082\u3001\u5f15\u304d\u7d9a\u304d\u6b63\u3057\u304f\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3092<strong>\u524d\u65b9\u4e92\u63db\u6027<\/strong>\u3068\u547c\u3073\u307e\u3059\u3002<\/p>\n<blockquote><p>The reverse (<strong>backwards compatibility<\/strong>) is not true. It is not possible to take program binaries linked with the latest version of a library binary in a release series (with additional symbols added), substitute in the initial release of the library binary, and remain link compatible. <\/p><\/blockquote>\n<p>\uff08\u4e0a\u8a18\u5f15\u7528\u306eGoogle\u7ffb\u8a33\uff09<br \/>\n\u305d\u306e\u9006 (<strong>\u4e0b\u4f4d\u4e92\u63db\u6027<\/strong>) \u306f\u5f53\u3066\u306f\u307e\u308a\u307e\u305b\u3093\u3002\u30ea\u30ea\u30fc\u30b9 \u30b7\u30ea\u30fc\u30ba\u306e\u30e9\u30a4\u30d6\u30e9\u30ea \u30d0\u30a4\u30ca\u30ea\u306e\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3 (\u30b7\u30f3\u30dc\u30eb\u304c\u8ffd\u52a0\u3055\u308c\u305f) \u306b\u30ea\u30f3\u30af\u3055\u308c\u305f\u30d7\u30ed\u30b0\u30e9\u30e0 \u30d0\u30a4\u30ca\u30ea\u3092\u53d6\u5f97\u3057\u3001\u30e9\u30a4\u30d6\u30e9\u30ea \u30d0\u30a4\u30ca\u30ea\u306e\u521d\u671f\u30ea\u30ea\u30fc\u30b9\u3067\u7f6e\u304d\u63db\u3048\u3066\u3001\u30ea\u30f3\u30af\u4e92\u63db\u6027\u3092\u7dad\u6301\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002<\/p>\n<blockquote><p>Binaries with equivalent DT_SONAMEs are <strong>forward-compatibile<\/strong>: in the table below, releases incompatible with the previous one are explicitly noted.<\/p><\/blockquote>\n<p>\uff08\u4e0a\u8a18\u5f15\u7528\u306eGoogle\u7ffb\u8a33\uff09<br \/>\n\u540c\u7b49\u306e DT_SONAME \u3092\u6301\u3064\u30d0\u30a4\u30ca\u30ea\u306f<strong>\u4e0a\u4f4d\u4e92\u63db\u6027<\/strong>\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u8868\u3067\u306f\u3001\u4ee5\u524d\u306e\u30ea\u30ea\u30fc\u30b9\u3068\u4e92\u63db\u6027\u306e\u306a\u3044\u30ea\u30ea\u30fc\u30b9\u304c\u660e\u793a\u7684\u306b\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<h2>Stack Overflow<\/h2>\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/11107263\/how-compatible-are-different-versions-of-glibc\">https:\/\/stackoverflow.com\/questions\/11107263\/how-compatible-are-different-versions-of-glibc<\/a><\/p>\n<blockquote><p>In general, running binaries that were compiled for an older glibc version (e.g. 2.13) will run fine on a system with a newer glibc (e.g. 2.14, like your system).<\/p><\/blockquote>\n<p>\uff08\u4e0a\u8a18\u5f15\u7528\u306eGoogle\u7ffb\u8a33\uff09\u4e00\u822c\u306b\u3001\u53e4\u3044 glibc \u30d0\u30fc\u30b8\u30e7\u30f3 (\u4f8b: 2.13) \u7528\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3055\u308c\u305f\u30d0\u30a4\u30ca\u30ea\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u65b0\u3057\u3044 glibc \u3092\u642d\u8f09\u3057\u305f\u30b7\u30b9\u30c6\u30e0 (\u4f8b: 2.14\u3001\u304a\u4f7f\u3044\u306e\u30b7\u30b9\u30c6\u30e0) \u3067\u6b63\u5e38\u306b\u52d5\u4f5c\u3057\u307e\u3059\u3002<\/p>\n<blockquote><p>Running a binary that was built for a newer glibc (e.g. 2.15, like the one that fails) on a system with an older glibc will probably not work.<\/p><\/blockquote>\n<p>\uff08\u4e0a\u8a18\u5f15\u7528\u306eGoogle\u7ffb\u8a33\uff09<br \/>\n\u65b0\u3057\u3044 glibc (\u5931\u6557\u3057\u305f\u3082\u306e\u3068\u540c\u69d8\u306e 2.15 \u306a\u3069) \u7528\u306b\u69cb\u7bc9\u3055\u308c\u305f\u30d0\u30a4\u30ca\u30ea\u3092\u3001\u53e4\u3044 glibc \u3092\u642d\u8f09\u3057\u305f\u30b7\u30b9\u30c6\u30e0\u3067\u5b9f\u884c\u3059\u308b\u3068\u3001\u304a\u305d\u3089\u304f\u6a5f\u80fd\u3057\u307e\u305b\u3093\u3002<\/p>\n<blockquote><p>In short, glibc is <strong>backward-compatible<\/strong>, not <strong>forward-compatible<\/strong>.<\/p><\/blockquote>\n<p>\uff08\u4e0a\u8a18\u5f15\u7528\u306eGoogle\u7ffb\u8a33\uff09<br \/>\n\u3064\u307e\u308a\u3001glibc \u306f<strong>\u4e0b\u4f4d\u4e92\u63db\u6027<\/strong>\u304c\u3042\u308a\u307e\u3059\u304c\u3001<strong>\u524d\u65b9\u4e92\u63db\u6027<\/strong>\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n<h2>\u7591\u554f\u70b9<\/h2>\n<p>\u4e0a\u4f4d\u4e92\u63db\u6027\u3082\u3057\u304f\u306f\u524d\u65b9\u4e92\u63db\u6027\uff08forward compatibility)\u3068\u4e0b\u4f4d\u4e92\u63db\u6027\u3082\u3057\u304f\u306f\u5f8c\u65b9\u4e92\u63db\u6027\uff08backward compatibility)\u3068\u3044\u3046\u4e8c\u3064\u306e\u8a00\u8449\u304c\u3001\u6700\u521d\u306e\u4f8b\uff08GCC\u306e\u30de\u30cb\u30e5\u30a2\u30eb\uff09\u3068\u4e8c\u3064\u76ee\u306e\u4f8b\uff08Stack Overflow\uff09\u3067\u771f\u9006\u306b\u4f7f\u308f\u308c\u3066\u3044\u308b\u3088\u3046\u306b\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>\u3069\u3061\u3089\u304c\u6b63\u3057\u3044\u3067\u3057\u3087\u3046\u304b\uff1f<\/p>\n","protected":false},"excerpt":{"rendered":"<p>GCC\u306elibstdc++\u306e\u30de\u30cb\u30e5\u30a2\u30eb\u3088\u308a https:\/\/gcc.gnu.org\/onlinedocs\/libstdc++\/manual\/abi.html Versioning\/Goal\u3000\uff08\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\/\u76ee\u6a19\uff09 Ve [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-16739","post","type-post","status-publish","format-standard","hentry","category-column"],"_links":{"self":[{"href":"https:\/\/blog.antenna.co.jp\/ILSoft2\/wp-json\/wp\/v2\/posts\/16739","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.antenna.co.jp\/ILSoft2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.antenna.co.jp\/ILSoft2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.antenna.co.jp\/ILSoft2\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.antenna.co.jp\/ILSoft2\/wp-json\/wp\/v2\/comments?post=16739"}],"version-history":[{"count":0,"href":"https:\/\/blog.antenna.co.jp\/ILSoft2\/wp-json\/wp\/v2\/posts\/16739\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.antenna.co.jp\/ILSoft2\/wp-json\/wp\/v2\/media?parent=16739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.antenna.co.jp\/ILSoft2\/wp-json\/wp\/v2\/categories?post=16739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.antenna.co.jp\/ILSoft2\/wp-json\/wp\/v2\/tags?post=16739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}