Renesas TCP/IP stack T4 (libT4_XXXX.a)を最近のnewer GNURXでbuildする対処法を探してみた

こんにちは。NoMaYです。

最近、以下のスレッドに関わって知ったのですが、ルネサスさんのTCP/IPスタックT4のバイナリライブラリ(元ソースもRXスマートコンフィグレータにて提供される)が以下の画面コピーのT4のドキュメント記載の事情によりビルド出来ないことを知りました。そこで対処法を試行錯誤してみました。

続く。

FreeRTOSとr_t4_rxを使用した際のビルドエラーについて(RX72N)
japan.renesasrulz.com/cafe_rene/forums-groups/beginners/f/002-2095199602/8335/freertos-r_t4_rx-rx72n/42982#42982

ところで脱線しますけれども、T4のドキュメントの以下の制限事項ですが、エラーは発生するのでしょうか?


RX SmartConfiguratorで気になった点とか改善する案とか報告してみるスレッド
japan.renesasrulz.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/7536/rx-smartconfigurator/43222#43222

ビルドエラーが発生するのはT4のライブラリ(r_t4_rx/make_lib/make_lib.zip の中にライブラリソースと作成用プロジェクトが入っています)を自前で作成する時です。


以下、T4のドキュメントの画面コピーです。


 

Parents
  • こんにちは。NoMaYです。#とても気まずいことに気付いてしまいました、、、

    今回はT4側のin_addr_tを業界標準に適合させることを目的にしませんでしたので、GCC側のin_addr_tを無効化することにしました。T4がサポートしている他のコンパイラのCC-RXとICCRXではBSD由来のもろもろをサポートしていない(と思われる)ことを考えると、__BSD_VISIBLEを無効化することを考えるのが妥当では無いかと私は考えました。

    そして、以下の画面コピーのとおり#defineの連鎖を追ってみた結果、_ISOC99_SOURCEを#defineするのが良さそうだと考えるに至りました。(ところがどっこい、今頃気付いたのですが、以下の画面コピーの3枚目の内容を見ていてハタとコンパイルオプションを-std=gnu99では無くて-std=c99とすれば良いのだろうか?と思って試してみたら、それだけで出来てしまいました、、、あぁっ、とても気まずいです、、、)

    続く。

    以下、画面コピーです。






    /*
     * Feature test macros control which symbols are exposed by the system
     * headers.  Any of these must be defined before including any headers.
     *
     * __STRICT_ANSI__ (defined by gcc -ansi, -std=c90, -std=c99, or -std=c11)
     *    ISO C
     *
     * _POSIX_SOURCE (deprecated by _POSIX_C_SOURCE=1)
     * _POSIX_C_SOURCE >= 1
     *     POSIX.1-1990
     *
     * _POSIX_C_SOURCE >= 2
     *     POSIX.2-1992
     *
     * _POSIX_C_SOURCE >= 199309L
     *     POSIX.1b-1993 Real-time extensions
     *
     * _POSIX_C_SOURCE >= 199506L
     *     POSIX.1c-1995 Threads extensions
     *
     * _POSIX_C_SOURCE >= 200112L
     *     POSIX.1-2001 and C99
     *
     * _POSIX_C_SOURCE >= 200809L
     *     POSIX.1-2008
     *
     * _XOPEN_SOURCE
     *    POSIX.1-1990 and XPG4
     *
     * _XOPEN_SOURCE_EXTENDED
     *    SUSv1 (POSIX.2-1992 plus XPG4v2)
     *
     * _XOPEN_SOURCE >= 500
     *    SUSv2 (POSIX.1c-1995 plus XSI)
     *
     * _XOPEN_SOURCE >= 600
     *    SUSv3 (POSIX.1-2001 plus XSI) and C99
     *
     * _XOPEN_SOURCE >= 700
     *    SUSv4 (POSIX.1-2008 plus XSI)
     *
     * _ISOC99_SOURCE or gcc -std=c99 or g++
     *     ISO C99
     *
     * _ISOC11_SOURCE or gcc -std=c11 or g++ -std=c++11
     *     ISO C11
     *
     * _ATFILE_SOURCE (implied by _POSIX_C_SOURCE >= 200809L)
     *    "at" functions
     *
     * _LARGEFILE_SOURCE (deprecated by _XOPEN_SOURCE >= 500)
     *    fseeko, ftello
     *
     * _GNU_SOURCE
     *     All of the above plus GNU extensions
     *
     * _BSD_SOURCE (deprecated by _DEFAULT_SOURCE)
     * _SVID_SOURCE (deprecated by _DEFAULT_SOURCE)
     * _DEFAULT_SOURCE (or none of the above)
     *     POSIX-1.2008 with BSD and SVr4 extensions
     *
     * _FORTIFY_SOURCE = 1 or 2
     *     Object Size Checking function wrappers
     */

     

Reply
  • こんにちは。NoMaYです。#とても気まずいことに気付いてしまいました、、、

    今回はT4側のin_addr_tを業界標準に適合させることを目的にしませんでしたので、GCC側のin_addr_tを無効化することにしました。T4がサポートしている他のコンパイラのCC-RXとICCRXではBSD由来のもろもろをサポートしていない(と思われる)ことを考えると、__BSD_VISIBLEを無効化することを考えるのが妥当では無いかと私は考えました。

    そして、以下の画面コピーのとおり#defineの連鎖を追ってみた結果、_ISOC99_SOURCEを#defineするのが良さそうだと考えるに至りました。(ところがどっこい、今頃気付いたのですが、以下の画面コピーの3枚目の内容を見ていてハタとコンパイルオプションを-std=gnu99では無くて-std=c99とすれば良いのだろうか?と思って試してみたら、それだけで出来てしまいました、、、あぁっ、とても気まずいです、、、)

    続く。

    以下、画面コピーです。






    /*
     * Feature test macros control which symbols are exposed by the system
     * headers.  Any of these must be defined before including any headers.
     *
     * __STRICT_ANSI__ (defined by gcc -ansi, -std=c90, -std=c99, or -std=c11)
     *    ISO C
     *
     * _POSIX_SOURCE (deprecated by _POSIX_C_SOURCE=1)
     * _POSIX_C_SOURCE >= 1
     *     POSIX.1-1990
     *
     * _POSIX_C_SOURCE >= 2
     *     POSIX.2-1992
     *
     * _POSIX_C_SOURCE >= 199309L
     *     POSIX.1b-1993 Real-time extensions
     *
     * _POSIX_C_SOURCE >= 199506L
     *     POSIX.1c-1995 Threads extensions
     *
     * _POSIX_C_SOURCE >= 200112L
     *     POSIX.1-2001 and C99
     *
     * _POSIX_C_SOURCE >= 200809L
     *     POSIX.1-2008
     *
     * _XOPEN_SOURCE
     *    POSIX.1-1990 and XPG4
     *
     * _XOPEN_SOURCE_EXTENDED
     *    SUSv1 (POSIX.2-1992 plus XPG4v2)
     *
     * _XOPEN_SOURCE >= 500
     *    SUSv2 (POSIX.1c-1995 plus XSI)
     *
     * _XOPEN_SOURCE >= 600
     *    SUSv3 (POSIX.1-2001 plus XSI) and C99
     *
     * _XOPEN_SOURCE >= 700
     *    SUSv4 (POSIX.1-2008 plus XSI)
     *
     * _ISOC99_SOURCE or gcc -std=c99 or g++
     *     ISO C99
     *
     * _ISOC11_SOURCE or gcc -std=c11 or g++ -std=c++11
     *     ISO C11
     *
     * _ATFILE_SOURCE (implied by _POSIX_C_SOURCE >= 200809L)
     *    "at" functions
     *
     * _LARGEFILE_SOURCE (deprecated by _XOPEN_SOURCE >= 500)
     *    fseeko, ftello
     *
     * _GNU_SOURCE
     *     All of the above plus GNU extensions
     *
     * _BSD_SOURCE (deprecated by _DEFAULT_SOURCE)
     * _SVID_SOURCE (deprecated by _DEFAULT_SOURCE)
     * _DEFAULT_SOURCE (or none of the above)
     *     POSIX-1.2008 with BSD and SVr4 extensions
     *
     * _FORTIFY_SOURCE = 1 or 2
     *     Object Size Checking function wrappers
     */

     

Children
No Data