Cocoa touch iOS中的Gnu科学图书馆

Cocoa touch iOS中的Gnu科学图书馆,cocoa-touch,gsl,Cocoa Touch,Gsl,如何在iOS应用程序中使用GNU科学库 我尝试了以下教程:。但这种方式似乎不适用于iOS,只适用于OS X。在我使用“外部构建系统”将GSL源代码添加到XCode后,XCode希望为OS X SDK而不是iOS SDK构建GSL子项目的目标。我不确定是否有更好的方法,但我做的是: 我在XCode上创建了一个新的“Cocoa Touch静态库”项目,并放入了我需要的所有必要的GSL源文件。如果要在iPhone上运行活动方案,请将其设置为“iOS设备”(否则,它只能在iPhone模拟器上运行)。然后

如何在iOS应用程序中使用GNU科学库


我尝试了以下教程:。但这种方式似乎不适用于iOS,只适用于OS X。在我使用“外部构建系统”将GSL源代码添加到XCode后,XCode希望为OS X SDK而不是iOS SDK构建GSL子项目的目标。

我不确定是否有更好的方法,但我做的是:
我在XCode上创建了一个新的“Cocoa Touch静态库”项目,并放入了我需要的所有必要的GSL源文件。如果要在iPhone上运行活动方案,请将其设置为“iOS设备”(否则,它只能在iPhone模拟器上运行)。然后构建该项目,您将获得在iPhone上工作的静态GSL库

我不确定是否有更好的方法,但以下是我所做的:
我在XCode上创建了一个新的“Cocoa Touch静态库”项目,并放入了我需要的所有必要的GSL源文件。如果要在iPhone上运行活动方案,请将其设置为“iOS设备”(否则,它只能在iPhone模拟器上运行)。然后构建该项目,您将获得在iPhone上工作的静态GSL库

运行iOS的小型设备是32位系统。您需要通过如下配置make过程来为32位机器重建Gnu科学库(GSL):/configure CFLAGS=“-arch i386”,然后根据第一次尝试中的教程将新库文件制作并链接到您的项目


对上述声明的修订:该建议在获得适用于iOS模拟器的构建时效果良好,但不清楚GSL是否能够在不改变代码基础的情况下成功构建用于ARMv7体系结构。如果可能的话,构建GSL似乎需要与提供的工具链不同的工具链。

运行iOS的小型设备是32位系统。您需要通过如下配置make过程来为32位机器重建Gnu科学库(GSL):/configure CFLAGS=“-arch i386”,然后根据第一次尝试中的教程将新库文件制作并链接到您的项目


对上述声明的修订:该建议在获得适用于iOS模拟器的构建时效果良好,但不清楚GSL是否能够在不改变代码基础的情况下成功构建用于ARMv7体系结构。如果可能的话,似乎需要一个与提供的工具链不同的工具链来构建GSL。

好!适用于我的配置:

sudo./configure--禁用共享--禁用依赖项跟踪 --host=armv7-apple-darwin10 CFLAGS=“-I/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/include -I/Library/iPhone/include-isysroot/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk” CC=“/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1” CPP=CPP LDFLAGS=“-isysroot /开发者/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk”


好的!适用于我的配置:

sudo./configure--禁用共享--禁用依赖项跟踪 --host=armv7-apple-darwin10 CFLAGS=“-I/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/include -I/Library/iPhone/include-isysroot/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk” CC=“/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1” CPP=CPP LDFLAGS=“-isysroot /开发者/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk”


这并不容易,但这些是我采取的让它工作的步骤

1) 下载并提取最新的GSL

2) 在gsl目录中,
/configure
--禁用共享--禁用依赖项跟踪CFLAGS=“-DGSL_C99_INLINE-g-O2”

3) 在Xcode中创建Cocoa Touch静态库项目

4) 将以下标题复制到项目中:
config.h、build.h、gsl\u machine.h

5) 查找要在项目中使用的功能。将那些
.c
文件复制到项目中

6) 然后跟踪该函数,查看它调用的其他函数,一直到底部

7) 将这些函数所在的所有
.c
文件复制到项目中

8) 将这些函数定义所需的所有
.h
文件复制到项目中

9) 有一种更优雅的方法可以做到这一点,但对我来说,我只是走了一条简单的路线,将
#include
语句更改为
#include“xxxxxx.h”
。注释掉所有实际上不需要的
#包括
s

10) 对于那些
.c
文件中不需要的任何函数,您都可以删除它们,以减少需要使用的其他include的数量。您可以直接删除它们,但我建议将
#if 0
#endif
放在它们周围。以防万一你遗漏了一些东西,以后需要把它们包括进去

11) 构建并检查错误。如果缺少某个函数,请包含该函数的
.c
文件,冲洗,然后重复

我需要为我的项目包含
gsl\u cdf\u tdist\u p()
,当我跟踪所有方法调用时,这是所需所有函数的列表。(任何带有*after的函数都是已经遇到过的函数,因此我不需要跟踪它):


这并不容易,但这些是我采取的让它工作的步骤

1) 下载并提取最新的GSL

2) 在gsl目录中,
/configure
--禁用共享--禁用依赖项跟踪CFLAGS=“-DGSL_C99_INLINE-g-O2”

3) 在Xcode中创建Cocoa Touch静态库项目

4) 将以下标题复制到项目中:
config.h、build.h、gsl\u machine.h

5) 查找要在项目中使用的功能。将那些
.c
文件复制到项目中

<
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