【076】mivfx 0.5.0登場
このコミットが含まれているのは:
コミット
9026d8af92
247
gemini/blog.atom
247
gemini/blog.atom
|
@ -3,13 +3,56 @@
|
|||
<id>gemini://technicalsuwako.moe</id>
|
||||
<title>テクニカル諏訪子</title>
|
||||
|
||||
<updated>2024-04-29T00:00:00Z</updated>
|
||||
<updated>2024-05-03T00:00:00Z</updated>
|
||||
|
||||
<author><name>テクニカル諏訪子</name></author>
|
||||
<link href="gemini://technicalsuwako.moe" rel="alternate"></link>
|
||||
|
||||
|
||||
|
||||
<entry>
|
||||
<id>blog/mivfx-050.gmi</id>
|
||||
<author><name>凛</name></author>
|
||||
<title type="html">【076】mivfx 0.5.0登場</title>
|
||||
<published>2024-05-03T00:00:00Z</published>
|
||||
|
||||
<category term="jp"></category>
|
||||
|
||||
<category term="blog"></category>
|
||||
|
||||
<category term="ウエブ開発"></category>
|
||||
|
||||
<category term="076"></category>
|
||||
|
||||
<category term="mivfx"></category>
|
||||
|
||||
<link href="gemini://technicalsuwako.moe/blog/mivfx-050.gmi" rel="alternate"></link>
|
||||
<content type="html">
|
||||
|
||||
|
||||
|
||||
<h2 id="mivfx">mivfxって何?</h2>
|
||||
<p>mivfxはミニマリストな画像ビューアーです。</p>
|
||||
<h2 id="heading">変更</h2>
|
||||
<ul>
|
||||
<li>.desktopファイルの追加</li>
|
||||
<li>CDNを回避する様に</li>
|
||||
<li>画像は大き過ぎるの場合、画面に合うまで小さくにする様に</li>
|
||||
<li>「Q」キーを押すと、終了する様に</li>
|
||||
<li>サイズ変更の修正</li>
|
||||
<li>Pixivからダウンロード出来る様に</li>
|
||||
<li>ズーム機能性の追加</li>
|
||||
<li>マウスで使って画像を移動出来る様に</li>
|
||||
<li>OpenBSDで靜的リンクを可能に</li>
|
||||
</ul>
|
||||
<h2 id="heading-1">ソースコード</h2>
|
||||
<p><a href="https://gitler.moe/suwako/mivfx">Gitler</a></p>
|
||||
<p>以上</p>
|
||||
|
||||
|
||||
</content>
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<id>blog/security-weak-password-problem.gmi</id>
|
||||
<author><name>凛</name></author>
|
||||
|
@ -305,207 +348,5 @@ NetBSDはFreeBSDよりも遥に優れたデスクトップユーザー経験を
|
|||
</content>
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<id>blog/c-static-link.gmi</id>
|
||||
<author><name>凛</name></author>
|
||||
<title type="html">【C言語】静的リンクする方法</title>
|
||||
<published>2024-04-16T00:00:00Z</published>
|
||||
|
||||
<category term="jp"></category>
|
||||
|
||||
<category term="blog"></category>
|
||||
|
||||
<category term="c言語"></category>
|
||||
|
||||
<category term="c++"></category>
|
||||
|
||||
<category term="openbsd"></category>
|
||||
|
||||
<category term="freebsd"></category>
|
||||
|
||||
<category term="netbsd"></category>
|
||||
|
||||
<category term="linux"></category>
|
||||
|
||||
<category term="プログラミング"></category>
|
||||
|
||||
<link href="gemini://technicalsuwako.moe/blog/c-static-link.gmi" rel="alternate"></link>
|
||||
<content type="html">
|
||||
|
||||
|
||||
|
||||
<h2 id="heading">注意点</h2>
|
||||
<p>もし貴方のLinuxディストリビューションがglibcライブラリを使用している場合、この投稿は恐らく動作しません。<br />
|
||||
muslを使用したLinuxディストリビューションか、BSD OSをご検討下さい。<br />
|
||||
muslを使用した人気のあるLinuxディストリビューションには、Void Linux、Gentoo、Alpine Linuxがあります。</p>
|
||||
<h2 id="c">C言語でのソフトを静的リンクは可能!?</h2>
|
||||
<p>はい、可能です。<br />
|
||||
前述の通り、glibcでは恐らく不可能です。<br />
|
||||
しかし、muslを使用したLinuxディストリビューションで静的リンクを行うと、glibcを使用したLinuxディストリビューションでも実行出来るという事です。<br />
|
||||
必要なのは、リンクする全てのライブラリの 「.a」 バージョンです。<br />
|
||||
コンパイルするコマンドは、動的リンクとは非常に異なる見た目になります。<br />
|
||||
例として、自分の「sp」を取り上げましょう。</p>
|
||||
<p>動的リンクでは、コマンドは次の様になります:</p>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>cc -L/usr/local/lib -I/usr/local/include -o sp *.c -lgpgme -lassuan
|
||||
</span></span></code></pre><p>しかし、静的リンクでは、このコマンドは次の様になります(OpenBSDの場合):</p>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>cc -L/usr/local/lib -I/usr/local/include -o sp *.c -static -lgpgme -lcrypto -lc -lassuan -lgpg-error -lthr -lintl
|
||||
</span></span></code></pre><h2 id="heading-1">必要なライブラリを受取方</h2>
|
||||
<p>どのライブラリをリンクする必要があるかを知るには、まず動的リンクされたバイナリをコンパイルする必要があります。<br />
|
||||
その後、<code lang="">ldd</code> コマンドを使用して必要なライブラリを調べる事が出来ます。</p>
|
||||
<h3 id="openbsd">OpenBSD</h3>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>$ ldd ./sp
|
||||
</span></span><span style="display:flex;"><span>sp:
|
||||
</span></span><span style="display:flex;"><span> Start End Type Open Ref GrpRef Name
|
||||
</span></span><span style="display:flex;"><span> 00000664e28c2000 00000664e28cd000 exe <span style="color:#666">1</span> <span style="color:#666">0</span> <span style="color:#666">0</span> sp
|
||||
</span></span><span style="display:flex;"><span> 000006678e2b6000 000006678e317000 rlib <span style="color:#666">0</span> <span style="color:#666">1</span> <span style="color:#666">0</span> /usr/local/lib/libgpgme.so.24.2
|
||||
</span></span><span style="display:flex;"><span> 00000666f3610000 00000666f3824000 rlib <span style="color:#666">0</span> <span style="color:#666">1</span> <span style="color:#666">0</span> /usr/lib/libcrypto.so.53.0
|
||||
</span></span><span style="display:flex;"><span> 000006672dfe7000 000006672e0de000 rlib <span style="color:#666">0</span> <span style="color:#666">1</span> <span style="color:#666">0</span> /usr/lib/libc.so.99.0
|
||||
</span></span><span style="display:flex;"><span> 000006670aadd000 000006670aaf5000 rlib <span style="color:#666">0</span> <span style="color:#666">1</span> <span style="color:#666">0</span> /usr/local/lib/libassuan.so.2.1
|
||||
</span></span><span style="display:flex;"><span> 000006670b08d000 000006670b0b7000 rlib <span style="color:#666">0</span> <span style="color:#666">2</span> <span style="color:#666">0</span> /usr/local/lib/libgpg-error.so.3.26
|
||||
</span></span><span style="display:flex;"><span> 0000066744e3e000 0000066744e62000 rlib <span style="color:#666">0</span> <span style="color:#666">3</span> <span style="color:#666">0</span> /usr/local/lib/libintl.so.8.0
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">0000066705496000</span> 00000667055a8000 rlib <span style="color:#666">0</span> <span style="color:#666">4</span> <span style="color:#666">0</span> /usr/local/lib/libiconv.so.7.1
|
||||
</span></span><span style="display:flex;"><span> 00000667c6522000 00000667c6522000 ld.so <span style="color:#666">0</span> <span style="color:#666">1</span> <span style="color:#666">0</span> /usr/libexec/ld.so
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>$ file ./sp
|
||||
</span></span><span style="display:flex;"><span>./sp: ELF 64-bit LSB shared object, x86-64, version <span style="color:#666">1</span>
|
||||
</span></span></code></pre><h3 id="freebsd">FreeBSD</h3>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>$ ldd ./sp
|
||||
</span></span><span style="display:flex;"><span>./sp:
|
||||
</span></span><span style="display:flex;"><span> libgpgme.so.43 <span style="color:#666">=</span>&gt; /usr/local/lib/libgpgme.so.43 <span style="color:#666">(</span>0x15272fd71000<span style="color:#666">)</span>
|
||||
</span></span><span style="display:flex;"><span> libcrypto.so.30 <span style="color:#666">=</span>&gt; /lib/libcrypto.so.30 <span style="color:#666">(</span>0x15272e58e000<span style="color:#666">)</span>
|
||||
</span></span><span style="display:flex;"><span> libc.so.7 <span style="color:#666">=</span>&gt; /lib/libc.so.7 <span style="color:#666">(</span>0x15273063b000<span style="color:#666">)</span>
|
||||
</span></span><span style="display:flex;"><span> libassuan.so.8 <span style="color:#666">=</span>&gt; /usr/local/lib/libassuan.so.8 <span style="color:#666">(</span>0x15272ee04000<span style="color:#666">)</span>
|
||||
</span></span><span style="display:flex;"><span> libgpg-error.so.0 <span style="color:#666">=</span>&gt; /usr/local/lib/libgpg-error.so.0 <span style="color:#666">(</span>0x152731580000<span style="color:#666">)</span>
|
||||
</span></span><span style="display:flex;"><span> libthr.so.3 <span style="color:#666">=</span>&gt; /lib/libthr.so.3 <span style="color:#666">(</span>0x1527317bb000<span style="color:#666">)</span>
|
||||
</span></span><span style="display:flex;"><span> libintl.so.8 <span style="color:#666">=</span>&gt; /usr/local/lib/libintl.so.8 <span style="color:#666">(</span>0x15273205b000<span style="color:#666">)</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">[</span>vdso<span style="color:#666">]</span> <span style="color:#666">(</span>0x15272e207000<span style="color:#666">)</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>$ file ./sp
|
||||
</span></span><span style="display:flex;"><span>./sp: ELF 64-bit LSB executable, x86-64, version <span style="color:#666">1</span> <span style="color:#666">(</span>FreeBSD<span style="color:#666">)</span>, dynamically linked, interpreter /libexec/ld-elf.so.1, <span style="color:#a2f;font-weight:bold">for</span> FreeBSD 14.0 <span style="color:#666">(</span>1400097<span style="color:#666">)</span>, FreeBSD-style, stripped
|
||||
</span></span></code></pre><h3 id="netbsd">NetBSD</h3>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>$ <span style="color:#a2f">export</span> <span style="color:#b8860b">LD_LIBRARY_PATH</span><span style="color:#666">=</span>/usr/pkg/lib:<span style="color:#b8860b">$LD_LIBRARY_PATH</span>
|
||||
</span></span><span style="display:flex;"><span>$ ldd ./sp
|
||||
</span></span><span style="display:flex;"><span>./sp:
|
||||
</span></span><span style="display:flex;"><span> -lgpgme.11 <span style="color:#666">=</span>&gt; /usr/pkg/lib/libgpgme.so.11
|
||||
</span></span><span style="display:flex;"><span> -lassuan.0 <span style="color:#666">=</span>&gt; /usr/pkg/lib/libassuan.so.0
|
||||
</span></span><span style="display:flex;"><span> -lgpg-error.0 <span style="color:#666">=</span>&gt; /usr/pkg/lib/libgpg-error.so.0
|
||||
</span></span><span style="display:flex;"><span> -lintl.1 <span style="color:#666">=</span>&gt; /usr/lib/libintl.so.1
|
||||
</span></span><span style="display:flex;"><span> -lc.12 <span style="color:#666">=</span>&gt; /usr/lib/libc.so.12
|
||||
</span></span><span style="display:flex;"><span> -lcrypto.15 <span style="color:#666">=</span>&gt; /usr/lib/libcrypto.so.15
|
||||
</span></span><span style="display:flex;"><span> -lcrypt.1 <span style="color:#666">=</span>&gt; /lib/libcrypt.so.1
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>$ file ./sp
|
||||
</span></span><span style="display:flex;"><span>./sp: ELF 64-bit LSB executable, x86-64, version <span style="color:#666">1</span> <span style="color:#666">(</span>SYSV<span style="color:#666">)</span>, dynamically linked, interpreter /usr/libexec/ld.elf_so, <span style="color:#a2f;font-weight:bold">for</span> NetBSD 10.0, stripped
|
||||
</span></span></code></pre><h3 id="void-linux">Void Linux</h3>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>$ ldd ./sp
|
||||
</span></span><span style="display:flex;"><span> /lib/ld-musl-x86_64.so.1 <span style="color:#666">(</span>0x7f7689c5a000<span style="color:#666">)</span>
|
||||
</span></span><span style="display:flex;"><span> libgpgme.so.11 <span style="color:#666">=</span>&gt; /lib/libgpgme.so.11 <span style="color:#666">(</span>0x7f7689bfb000<span style="color:#666">)</span>
|
||||
</span></span><span style="display:flex;"><span> libcrypto.so.3 <span style="color:#666">=</span>&gt; /lib/libcrypto.so.3 <span style="color:#666">(</span>0x7f7689600000<span style="color:#666">)</span>
|
||||
</span></span><span style="display:flex;"><span> libc.so <span style="color:#666">=</span>&gt; /lib/ld-musl-x86_64.so.1 <span style="color:#666">(</span>0x7f7689c5a000<span style="color:#666">)</span>
|
||||
</span></span><span style="display:flex;"><span> libassuan.so.0 <span style="color:#666">=</span>&gt; /lib/libassuan.so.0 <span style="color:#666">(</span>0x7f7689be6000<span style="color:#666">)</span>
|
||||
</span></span><span style="display:flex;"><span> libgpg-error.so.0 <span style="color:#666">=</span>&gt; /lib/libgpg-error.so.0 <span style="color:#666">(</span>0x7f7689bbe000<span style="color:#666">)</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>$ file ./sp
|
||||
</span></span><span style="display:flex;"><span>./sp: ELF 64-bit LSB pie executable, x86-64, version <span style="color:#666">1</span> <span style="color:#666">(</span>SYSV<span style="color:#666">)</span>, dynamically linked, interpreter /lib/ld-musl-x86_64.so.1, BuildID<span style="color:#666">[</span>sha1<span style="color:#666">]=()</span>, stripped
|
||||
</span></span></code></pre><h2 id="heading-2">必要なライブラリをインストールする方法</h2>
|
||||
<p>OpenBSDとNetBSDでは、リポジトリからgpgmeのみをインストールすると、必要な全ての「.a」ファイルが既に入手出来ます。<br />
|
||||
流石ね、OppaiBSDとNyuuBSD!</p>
|
||||
<p>FreeBSDとVoid Linuxでは、libassuan.a と libgpgme.a のみが不足しています。<br />
|
||||
特にVoid Linuxでは、libgpg-error.a も不足しています。</p>
|
||||
<p>しかし、ソースからコンパイルすれば簡単に取得出来るという事です。<br />
|
||||
それではやってみましょう!<br />
|
||||
手順はFreeBSDとVoid Linuxの両方で有効ですので、コマンドは1度だけ提供します。</p>
|
||||
<h3 id="libgpgme-error">libgpgme-error</h3>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>wget https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.48.tar.gz
|
||||
</span></span><span style="display:flex;"><span>tar zxfv libgpg-error-1.48.tar.gz
|
||||
</span></span><span style="display:flex;"><span><span style="color:#a2f">cd</span> libgpg-error-1.48
|
||||
</span></span><span style="display:flex;"><span>./configure --enable-static
|
||||
</span></span><span style="display:flex;"><span>make
|
||||
</span></span><span style="display:flex;"><span>doas make install
|
||||
</span></span></code></pre><p>Void Linuxのみ:</p>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>doas mv /usr/local/lib/libgpg-error.a /usr/lib
|
||||
</span></span><span style="display:flex;"><span>doas mv /usr/local/lib/libgpg-error.la /usr/lib
|
||||
</span></span></code></pre><h3 id="libassuan">libassuan</h3>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>wget https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.5.7.tar.bz2
|
||||
</span></span><span style="display:flex;"><span>bsdtar -xvf libassuan-2.5.7.tar.bz2
|
||||
</span></span><span style="display:flex;"><span><span style="color:#a2f">cd</span> libassuan-2.5.7
|
||||
</span></span><span style="display:flex;"><span>./configure --enable-static
|
||||
</span></span><span style="display:flex;"><span>make
|
||||
</span></span><span style="display:flex;"><span>doas make install
|
||||
</span></span></code></pre><p>Void Linuxのみ:</p>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>doas mv /usr/local/lib/libassuan.a /usr/lib
|
||||
</span></span><span style="display:flex;"><span>doas mv /usr/local/lib/libassuan.la /usr/lib
|
||||
</span></span></code></pre><h3 id="libgpgme">libgpgme</h3>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>wget https://www.gnupg.org/ftp/gcrypt/gpgme/gpgme-1.23.2.tar.bz2
|
||||
</span></span><span style="display:flex;"><span>bsdtar -xvf gpgme-1.23.2.tar.bz2
|
||||
</span></span><span style="display:flex;"><span>cd gpgme-1.23.2
|
||||
</span></span><span style="display:flex;"><span>./autogen.sh
|
||||
</span></span><span style="display:flex;"><span>mkdir build &amp;&amp; cd build
|
||||
</span></span><span style="display:flex;"><span>../configure --enable-maintainer-mode --enable-static
|
||||
</span></span><span style="display:flex;"><span>make
|
||||
</span></span><span style="display:flex;"><span>doas make install
|
||||
</span></span></code></pre><p>Void Linuxのみ:</p>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>doas mv /usr/local/lib/libgpgme.a /usr/lib
|
||||
</span></span><span style="display:flex;"><span>doas mv /usr/local/lib/libgpgme.la /usr/lib
|
||||
</span></span><span style="display:flex;"><span>doas mv /usr/local/lib/libgpgmepp.a /usr/lib
|
||||
</span></span><span style="display:flex;"><span>doas mv /usr/local/lib/libgpgmepp.la /usr/lib
|
||||
</span></span></code></pre><p>必要な全ての「.a」ファイルを取得したら、この投稿の冒頭で提供したコマンドを使用してコンパイルを開始出来ます。</p>
|
||||
<h2 id="heading-3">結果</h2>
|
||||
<h3 id="openbsd-1">OpenBSD</h3>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>$ ldd ./sp
|
||||
</span></span><span style="display:flex;"><span>./sp:
|
||||
</span></span><span style="display:flex;"><span> Start End Type Open Ref GrpRef Name
|
||||
</span></span><span style="display:flex;"><span> 00000a9c31dc9000 00000a9c32131000 dlib <span style="color:#666">1</span> <span style="color:#666">0</span> <span style="color:#666">0</span> /home/suwako/dev/finish/sp/sp
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>$ file ./sp
|
||||
</span></span><span style="display:flex;"><span>./sp: ELF 64-bit LSB shared object, x86-64, version <span style="color:#666">1</span>
|
||||
</span></span></code></pre><h3 id="freebsd-1">FreeBSD</h3>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>$ ldd ./sp
|
||||
</span></span><span style="display:flex;"><span>ldd: ./sp: not a dynamic ELF executable
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>$ file ./sp
|
||||
</span></span><span style="display:flex;"><span>./sp: ELF 64-bit LSB executable, x86-64, version <span style="color:#666">1</span> <span style="color:#666">(</span>FreeBSD<span style="color:#666">)</span>, statically linked, <span style="color:#a2f;font-weight:bold">for</span> FreeBSD 14.0 <span style="color:#666">(</span>1400097<span style="color:#666">)</span>, FreeBSD-style, stripped
|
||||
</span></span></code></pre><h3 id="netbsd-1">NetBSD</h3>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>$ <span style="color:#a2f">export</span> <span style="color:#b8860b">LD_LIBRARY_PATH</span><span style="color:#666">=</span>/usr/pkg/lib:<span style="color:#b8860b">$LD_LIBRARY_PATH</span>
|
||||
</span></span><span style="display:flex;"><span>$ ldd ./sp
|
||||
</span></span><span style="display:flex;"><span>ldd: /home/suwako/dev/finish/sp/./sp-: invalid ELF class 2; expected <span style="color:#666">1</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>$ file ./sp
|
||||
</span></span><span style="display:flex;"><span>./sp: ELF 64-bit LSB executable, x86-64, version <span style="color:#666">1</span> <span style="color:#666">(</span>SYSV<span style="color:#666">)</span>, statically linked, <span style="color:#a2f;font-weight:bold">for</span> NetBSD 10.0, stripped
|
||||
</span></span></code></pre><h3 id="void-linux-1">Void Linux</h3>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>$ ldd ./sp
|
||||
</span></span><span style="display:flex;"><span>ldd: ./sp: Not a valid dynamic program
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>$ file ./sp
|
||||
</span></span><span style="display:flex;"><span>./sp: ELF 64-bit LSB executable, x86-64, version <span style="color:#666">1</span> <span style="color:#666">(</span>SYSV<span style="color:#666">)</span>, statically linked, BuildID<span style="color:#666">[</span>sha1<span style="color:#666">]=()</span>, stripped
|
||||
</span></span></code></pre><h2 id="heading-4">ファイルサイズが大き過ぎ!!</h2>
|
||||
<p>静的リンクを行うと、必要な全てのコードがバイナリに含まれる為、再コンパイルする必要なしに異なるコンピュータに単一のバイナリをコピー出来ます。<br />
|
||||
その為、バイナリのサイズは、動的リンクされたバイナリよりもかなり大きくなります。<br />
|
||||
動的リンクされたバイナリはシステム上のどこかにある「.so」ファイルを指すだけであり、システム間で異なる可能性があり、更に使用されているバージョンが異なる可能性がある為、バイナリは全く移植性がありません。<br />
|
||||
ローリングリリースのLinuxディストリビューションを使用している方は、ある時点で自分のプログラムが突然機能しなくなった経験があるかもしれません。<br />
|
||||
これは、「.so」ファイルが新しいバージョンに更新された為に発生しますが、プログラム自体は未だ同じバイナリです。<br />
|
||||
これがあたしが静的リンクを好む理由です!</p>
|
||||
<p>但し、コンパイル後に単純に <code lang="">strip</code> コマンドを使用する事で、バイナリサイズを大幅に削減できます。<br />
|
||||
警告に気にしないで下さい。<br />
|
||||
これはGNUの開発者の問題です(彼らはlibassuanとgpgmeを作成しました)。<br />
|
||||
あたしの「sp」プログラムは100%のコードが正しいです。</p>
|
||||
<pre style="background-color:#f8f8f8;; overflow-x: auto"><code lang=""><span style="display:flex;"><span>$ cc -Wall -Wextra -O3 -I/usr/local/include -L/usr/local/lib -o sp *.c -static -lgpgme -lcrypto -lc -lassuan -lgpg-error -lintl -liconv
|
||||
</span></span><span style="display:flex;"><span>engine-assuan.c<span style="color:#666">(</span>engine-assuan.o:<span style="color:#666">(</span>llass_set_engine_flags<span style="color:#666">)</span> in archive /usr/local/lib/libgpgme.a<span style="color:#666">)</span>: warning: strcpy<span style="color:#666">()</span> is almost always misused, please use strlcpy<span style="color:#666">()</span>
|
||||
</span></span><span style="display:flex;"><span>stringutils.c:107<span style="color:#666">(</span>libgpg_error_la-stringutils.o:<span style="color:#666">(</span>_gpgrt_vfnameconcat<span style="color:#666">)</span> in archive /usr/local/lib/libgpg-error.a<span style="color:#666">)</span>: warning: stpcpy<span style="color:#666">()</span> is dangerous; <span style="color:#a2f;font-weight:bold">do</span> not use it
|
||||
</span></span><span style="display:flex;"><span>estream-printf.c:1114<span style="color:#666">(</span>libgpg_error_la-estream-printf.o:<span style="color:#666">(</span>do_format<span style="color:#666">)</span> in archive /usr/local/lib/libgpg-error.a<span style="color:#666">)</span>: warning: sprintf<span style="color:#666">()</span> is often misused, please use snprintf<span style="color:#666">()</span>
|
||||
</span></span><span style="display:flex;"><span>assuan-handler.c<span style="color:#666">(</span>libassuan_la-assuan-handler.o:<span style="color:#666">(</span>assuan_write_status<span style="color:#666">)</span> in archive /usr/local/lib/libassuan.a<span style="color:#666">)</span>: warning: strcat<span style="color:#666">()</span> is almost always misused, please use strlcat<span style="color:#666">()</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>$ ls -thal sp
|
||||
</span></span><span style="display:flex;"><span>-rwxr-xr-x <span style="color:#666">1</span> suwako suwako 8.9M Apr <span style="color:#666">16</span> 14:37 sp
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>$ strip sp
|
||||
</span></span><span style="display:flex;"><span>$ ls -thal sp
|
||||
</span></span><span style="display:flex;"><span>-rwxr-xr-x <span style="color:#666">1</span> suwako suwako 3.4M Apr <span style="color:#666">16</span> 14:39 sp
|
||||
</span></span></code></pre><p>以上</p>
|
||||
|
||||
|
||||
</content>
|
||||
</entry>
|
||||
|
||||
|
||||
</feed>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
# 記事一覧
|
||||
|
||||
=> /blog/mivfx-050.gmi 2024年05月03日 【076】mivfx 0.5.0登場
|
||||
=> /blog/security-weak-password-problem.gmi 2024年04月29日 【セキュリティ】殆どの日本のウェブサイトは非常に弱いパスワードを要求している
|
||||
=> /blog/odl-020.gmi 2024年04月26日 【076】odl 0.2.0登場
|
||||
=> /blog/which-openbsd-netbsd-freebsd.gmi 2024年04月23日 【BSD】OpenBSD、NetBSD、FreeBSD、どっと使っては良い?
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
=> /blog.gmi ブログ一覧へ
|
||||
|
||||
#【076】mivfx 0.5.0登場
|
||||
投稿日:2024-05-03
|
||||
|
||||
## mivfxって何?
|
||||
mivfxはミニマリストな画像ビューアーです。
|
||||
|
||||
## 変更
|
||||
* .desktopファイルの追加
|
||||
* CDNを回避する様に
|
||||
* 画像は大き過ぎるの場合、画面に合うまで小さくにする様に
|
||||
* 「Q」キーを押すと、終了する様に
|
||||
* サイズ変更の修正
|
||||
* Pixivからダウンロード出来る様に
|
||||
* ズーム機能性の追加
|
||||
* マウスで使って画像を移動出来る様に
|
||||
* OpenBSDで靜的リンクを可能に
|
||||
|
||||
## ソースコード
|
||||
=> https://gitler.moe/suwako/mivfx Gitler
|
||||
|
||||
以上
|
|
@ -3,6 +3,7 @@
|
|||
# avatar = gemini://076.moe/static/suwako.jpg
|
||||
# description = テクニカル諏訪子様のtwtxtフィード
|
||||
# link = ホームページ gemini://technicalsuwako.moe
|
||||
2024-05-03T00:00:00Z09:00 【076】mivfx 0.5.0登場 - gemini://technicalsuwako.moe/blog/mivfx-050.gmi
|
||||
2024-04-29T00:00:00Z09:00 【セキュリティ】殆どの日本のウェブサイトは非常に弱いパスワードを要求している - gemini://technicalsuwako.moe/blog/security-weak-password-problem.gmi
|
||||
2024-04-26T00:00:00Z09:00 【076】odl 0.2.0登場 - gemini://technicalsuwako.moe/blog/odl-020.gmi
|
||||
2024-04-23T00:00:00Z09:00 【BSD】OpenBSD、NetBSD、FreeBSD、どっと使っては良い? - gemini://technicalsuwako.moe/blog/which-openbsd-netbsd-freebsd.gmi
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
title: 【076】mivfx 0.5.0登場
|
||||
author: 凛
|
||||
date: 2024-05-03
|
||||
tags: jp,blog,ウエブ開発,076,mivfx
|
||||
----
|
||||
## mivfxって何?
|
||||
mivfxはミニマリストな画像ビューアーです。
|
||||
|
||||
## 変更
|
||||
* .desktopファイルの追加
|
||||
* CDNを回避する様に
|
||||
* 画像は大き過ぎるの場合、画面に合うまで小さくにする様に
|
||||
* 「Q」キーを押すと、終了する様に
|
||||
* サイズ変更の修正
|
||||
* Pixivからダウンロード出来る様に
|
||||
* ズーム機能性の追加
|
||||
* マウスで使って画像を移動出来る様に
|
||||
* OpenBSDで靜的リンクを可能に
|
||||
|
||||
## ソースコード
|
||||
[Gitler](https://gitler.moe/suwako/mivfx)
|
||||
|
||||
以上
|
読み込み中…
新しいイシューから参照