0

iOS アプリケーションで GNU Scientific Library を使用するにはどうすればよいですか?

このチュートリアルに従ってみました: http://www.os-scientific.org/devel/gslxcode/index.html。しかし、この方法では iOS では機能しないようで、OS X でのみ機能するようです。「外部ビルド システム」を使用して GSL ソース コードを XCode に追加した後、XCode は、OS X SDK の代わりに、その GSL サブプロジェクトのターゲットをビルドしたいと考えています。 iOS SDK。

4

4 に答える 4

1

iOSを実行している小型デバイスは32ビットシステムです。次のようにmakeプロセスを構成して、32ビットマシン用のGnu Science Library(GSL)を再構築する必要があります。./ configureCFLAGS = "-arch i386"次に、新しいライブラリファイルを作成してプロジェクトにリンクします。あなたの最初の試みのチュートリアル。

上記のステートメントの改訂:このアドバイスは、iOSシミュレーターで機能するビルドを取得するのにうまく機能しますが、コードベースを変更せずにGSLをARMv7アーキテクチャーで正常にビルドできるかどうかは明らかではありません。可能であれば、GSLを構築するために提供されているものとは異なるツールチェーンが必要であるように思われます。

于 2012-03-27T10:35:32.333 に答える
0

簡単ではありませんでしたが、これらは私がそれを機能させるために取った手順です...

1) 最新の GSL をダウンロードして解凍する

2) gsl ディレクトリで、./configure --disable-shared --disable-dependency-tracking CFLAGS="-DGSL_C99_INLINE -g -O2"

3) Xcode で Cocoa Touch Static Library プロジェクトを作成します。

4) 次のヘッダーをプロジェクトにコピーします。config.h, build.h, gsl_machine.h

5) プロジェクトで使用する関数を見つけます。.cこれらのファイルをプロジェクトにコピーします。

6) 次に、その関数を追跡して、それが呼び出す他の関数を一番下まで確認します。

.c7)それらの関数が入っているすべてのファイルをプロジェクトにコピーします。

.h8)これらの関数定義に必要なすべてのファイルをプロジェクトにコピーします。

9) これを行うためのよりエレガントな方法がありますが、私にとっては単純な方法を採用し、#include <gsl/xxxxx.h>ステートメントを に変更しました#include "xxxxxx.h"#include実際に必要のない s はコメントアウトしてください。

10) これらのファイルで必要のない関数は.c、使用する必要のある他のインクルードの数を減らすために削除できます。#if 0それらを削除することもできますが、代わりに配置して囲むことをお勧め#endifします。何かを見逃して、後でそれらを含める必要がある場合に備えて。

11) ビルドしてエラーをチェックします。関数が不足している場合は、.cその関数のファイルを含めて、すすぎ、繰り返します。

プロジェクトに含める必要がありgsl_cdf_tdist_P()、すべてのメソッド呼び出しを追跡したところ、これが必要なすべての関数のリストです。( * の後にある関数は、既に遭遇したものなので、追跡する必要はありませんでした):

gsl_cdf_tdist_P
    cornish_fisher
        poly_eval
    gsl_cdf_ugaussian_P
        gauss_small
        gauss_medium
            get_del
        gauss_large
            get_del*
    beta_inc_AXPY
        gsl_sf_gamma_inc_Q
            gsl_sf_gamma_inc_Q_e
                gamma_inc_P_series
                    gamma_inc_D
                        gsl_sf_lngamma_e
                            lngamma_1_pade
                            lngamma_2_pade
                            lngamma_lanczos
                            lngamma_sgn_0
                            lngamma_sgn_sing
                                gsl_sf_lnfact_e
                                    gsl_sf_lngamma_e*
                                gsl_sf_psi_int_e
                                gsl_sf_psi_1_int_e
                                gsl_sf_psi_n_e
                                    gsl_sf_psi_e
                                        psi_x
                                            cheb_eval_e*
                                    gsl_sf_psi_1_e
                                        psi_n_xg0
                                            gsl_sf_psi_e*
                                            gsl_sf_hzeta_e
                                            gsl_sf_lnfact_e*
                                            gsl_sf_exp_mult_err_e
                                    gsl_sf_hzeta_e*
                                    gsl_sf_lnfact_e*
                                    gsl_sf_exp_mult_err_e*
                            lngamma_lanczos*
                        gsl_sf_gammastar_e
                            gsl_sf_lngamma_e*
                            gsl_sf_exp_err_e
                            cheb_eval_e*
                            gammastar_ser
                    gsl_sf_exprel_n_CF_e
                        exprel_n_CF
                gamma_inc_Q_asymp_unif
                    gsl_sf_log_1plusx_mx_e
                        cheb_eval_e*
                    gsl_sf_erfc_e
                        cheb_eval_e*
                gamma_inc_Q_series
                gamma_inc_Q_CF
                    gamma_inc_D*
                    gamma_inc_F_CF
                        gsl_pow_3
                    gamma_inc_Q_large_x
                        gamma_inc_D*
                    gamma_inc_Q_CF*
                    gamma_inc_P_series*
        gsl_sf_gamma_inc_P
            gsl_sf_gamma_inc_P_e
                gamma_inc_P_series*
                gamma_inc_Q_asymp_unif*
                gamma_inc_Q_CF*
                gamma_inc_Q_large_x*
                gamma_inc_P_series*
        gsl_sf_lnbeta
            gsl_sf_lnbeta_e
                gsl_sf_lnbeta_sgn_e
                    isnegint
                    gsl_sf_gammastar_e*
                    gsl_sf_log_1plusx_e
                        cheb_eval_e*
                    gsl_sf_lngamma_sgn_e
                        lngamma_1_pade*
                        lngamma_2_pade*
                        lngamma_lanczos*
                        lngamma_sgn_0*
                        lngamma_sgn_sing*
        beta_cont_frac
于 2014-06-27T21:01:32.670 に答える
-1

より良い方法があるかどうかはわかりませんが、私がやっていることは次のとおりです。XCode で新しい「Cocoa Touch Static Library」プロジェクトを作成し、必要なすべての GSL ソース ファイルを配置しました。iPhone で実行する場合は、アクティブなスキームを「iOS デバイス」に設定します (そうしないと、iPhone シミュレーターでのみ動作します)。次に、プロジェクトをビルドすると、iPhone で動作する静的 GSL ライブラリが得られます。

于 2011-08-13T02:11:08.060 に答える