61437


現在、Windows上にCygwinをインストールして、計算環境を構築しようとしているのですが、Linuxのライブラリ・コール・コマンドの
[fseeko,ftello](https://kazmax.zpp.jp/cmd/f/fseeko.3.html)
が利用できなくて悩んでおります。これらのライブラリを導入する事は可能なのかどうか、ご存知の方居ましたらお教え頂け無いでしょうか？


CC BY-SA 4.0
2019-12-14T02:35:19.470
61429
2019-12-14T11:19:13.107
2019-12-14T05:24:08.833
3060
19869
question
linux cygwin
fseeko, ftello等のLinuxのライブラリ・コール・コマンドをCygwinで利用する事は出来ますか？


オイラのところの [cygwin](/questions/tagged/cygwin "'cygwin' のタグが付いた質問を表示") x64
では何もしなくても `ftello()` が使えました。  
[cygwin](/questions/tagged/cygwin "'cygwin' のタグが付いた質問を表示") x64 64bit
版に更新してみるとよいかも

[code]

    $ 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 <stdio.h>
    int main() { return ftello(stdin); }
    $ gcc ftest.c
    $
    
[/code]

`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` が使えるよ、という記述があるので

[code]

    $ gcc -D_LARGEFILE_SOURCE ftest.c
    
[/code]

で先のソースもリンクできるはず（未テスト）


CC BY-SA 4.0
2019-12-14T11:06:01.297
61437
2019-12-14T11:19:13.107
2019-12-14T11:19:13.107
8589
8589
61429
answer