質問: 現在、Windows上にCygwinをインストールして、計算環境を構築しようとしているのですが、Linuxのライブラリ・コール・コマンドの fseeko,ftello が利用できなくて悩んでおります。これらのライブラリを導入する事は可能なのかどうか、ご存知の方居ましたらお教え頂け無いでしょうか?
回答: オイラのところの [cygwin](/questions/tagged/cygwin "'cygwin' のタグが付いた質問を表示") x64 では何もしなくても `ftello()` が使えました。 [cygwin](/questions/tagged/cygwin "'cygwin' のタグが付いた質問を表示") x64 64bit 版に更新してみるとよいかも ``` $ uname -a CYGWIN_NT-10.0 DESKTOP-*** 3.0.7(0.338/5/3) 2019-04-30 18:08 x86_64 Cygwin $ cat ftest.c #include int main() { return ftello(stdin); } $ gcc ftest.c $ ``` `ftell` / `fseek` と `ftello` / `fseeko` の違いは 2GiB 以上の大きなファイルが扱えるか否か。 [cygwin](/questions/tagged/cygwin "'cygwin' のタグが付いた質問を表示") x86 の場合 `long` が 32bit であるため `fseek` では 64bit offset が扱えない (ので `off_t` を使う `fseeko` を使わざるを得ない) に対し、そもそも [cygwin](/questions/tagged/cygwin "'cygwin' のタグが付いた質問を表示") x64 の場合 `long` は 64bit なので `fseek` と `fseeko` は同じものです。 [cygwin](/questions/tagged/cygwin "'cygwin' のタグが付いた質問を表示") x86 版にていろいろ試したいのであれば `/usr/include/sys/features.h` を読んで `gcc` のコマンドラインオプションの追加を試してみるとよし。 `_LARGEFILE_SOURCE` が `#define` されていると `fseeko` や `ftello` が使えるよ、という記述があるので ``` $ gcc -D_LARGEFILE_SOURCE ftest.c ``` で先のソースもリンクできるはず(未テスト)