CIFS上でコンパイルすると、Value too large for defined data typeみたいに怒られた件

Windows x64のファイル共有をサーバにしてファイルを置き、Windows上でコーディングして、セプキャンで頂いたPC上のUbuntu Linux x86(インストールCDがx86だったのです・w・;)でコンパイルを行うというような暴挙(?)にでています。
もちろん、Windowsのファイル共有に接続する際には、mount -t cifsを使っているわけなのです。
ところが、mountされたディレクトリ上でコンパイルを実行すると、何やら不吉なメッセージが出て、コンパイルがうまくいきません。

Value too large for defined data type

どーいうこっちゃ!?と調べてみると、ファイルサイズや、読み書き位置を指定するためのオフセットを格納する変数のサイズが、32bitシステム上だし、32bitとしてコンパイルされているのが原因かもしれないというのです。
http://www.gnu.org/software/coreutils/faq/coreutils-faq.html#Value-too-large-for-defined-data-type

しかし、別にファイルサイズが2GB超えるとか、ファイル自体が見えないわけでもないので、おかしいなと思って調べてみると、mount -t cifsのオプション「noserverino」に辿り着きました。
https://bbs.archlinux.org/viewtopic.php?id=85999

これを付けてmountすると、ばっちりコンパイルできた。
Linuxにおけるcifs client実装では、inodeは極力サーバのinodeを用いるというようになっているようです。そこで、64bitOS上の64bitサイズを持つinodeをそのまま使おうとしたところ、32bitでコンパイルされたプログラムで問題が発生した、ということのようです。あくまでも類推なので、参考程度にしてください。

なお、Windowsファイル共有のLinuxからのmountには、mount.cifsを用いります。Ubuntuでは、smbfsパッケージに含まれています。何もインストールしなくてもcifsに対応している素振りを見せたような気がしますが、利用の際はインストールしておくことをおすすめします。確か何か問題があったはず。