ccastle
@ccastle

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

コピーレフトを避ける為、gccのコンパイルにおいてliconv.aを排除できないか

(24/03/18 11:24追記)
wikipediaのリンクからGNU libiconvのページにアクセスしましたが、"The libiconv and libcharset libraries and their header files are under LGPL. The iconv program is under GPL."となっていました。
そして、iconv.exeはmingw64下には存在せず、ひとまず私のプログラムのライセンスはlibiconvを用いてもコピーレフトが適用されないようです。
したがって、コンパイル時にはどのようにliconv.aははたらいているのかを答えていただけるとありがたいです。

解決したいこと

CLIのゲーム開発で、liconv.a(GPL,LGPL)を使うことでコピーレフトが発生するように見受けました(ライブラリとして用いるならLGPLとなってコピーレフトされないとの情報もあったが該当箇所の抜粋部分の「あなた」の解釈によってはそのようには取れない)。

そこで試しに同ライブラリを抜いてコンパイルしてみましたが、英語表示のみのコードでもエラーが出ます。

そもそも、コンパイル時にはどのようにliconv.aははたらいているのか(コンパイルしたプログラムに静的リンクするのか、どの段階で必要になるのか等)を知りたいです。

また、ライブラリとして用いられていており、コピーレフトが避けられないならばgccにliconv.aを用いず代替のライブラリをコンパイル時に用いるように指定できないかも教えていただけると幸いです。

発生している問題・エラー

#(install directory)\x86_64-w64-mingw32\libから意図的にliconv.aを抜いてコンパイル

cannot find -liconv: No such file or directory

ライセンスの論拠部分の一部抜粋

The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
http://www.gnu.org/philosophy/why-not-lgpl.html.

直前部分の和訳

GNU一般公衆ライセンスは、あなたのプログラムをプロプライエタリなプロ グラムに組み込むことを許可していません。 あなたのプログラムがサブルーチン・ライブラリである場合、あなたはプロプライエタリなアプリケーションをライブラリとリンクすることを許可する方がより有用であると考えるかもしれません。 もしそうしたいのであれば、本許諾書の代わりにGNU劣等一般公有使用許諾書を使ってください。 しかし、その前にhttp://www.gnu.org/philosophy/why-not-lgpl.htmlを読んでください。

0

1Answer

ビルド時のgccに渡すオプション引数としてどこかで -liconv が設定されているだけなのでは。どうやって(どういうビルドシステムで)ビルドしていますか?

0Like

Comments

  1. @ccastle

    Questioner

    いえ、普通にオプション付けずにコンパイル(gcc ソースコード名)でもエラーは出ます。make等は使っていません。

  2. 問題の解決には再現できる最小限のセットアップを伝えていただく必要がありそうです。
    あるいは、まずはそちらで gcc -v ソースコード名 の出力を調べると何か手がかりがあるかもしれません。

  3. @ccastle

    Questioner

    標準出力をメモ帳にコピーして"iconv"の文字列検索を掛けたところ、--with-libiconvと-plugin-opt=-pass-through=-liconvと-liconvの3語が出てきました。因みに一つ目の結果の前にはTarget: x86_64-w64-mingw32 Configured with: ../../../src/gcc-13.2.0/configureという行がありました。ではそこにある設定ファイルをと思いましたが該当のフォルダは見当たりませんでした。

  4. gccのソースコード(https://ftp.gnu.org/gnu/gcc/ にあります)を見ると確かに configureスクリプト内で host_libs 変数に libiconv の文字がありますね。私もあまりよくわかっていませんが、もしこれが効いているのだとしたら、これを変更してgcc自体をリビルドしないといけないのか、それとも何かキャンセルする方法があるのかですね。

  5. たとえば int main() {} だけの test.c があって gcc test.c を実行しても同様のエラーとなるのでしょうか?

  6. @ccastle

    Questioner

    ええ、そうなりました。

Your answer might help someone💌