Cocoa touch iOS中的Gnu科学图书馆
如何在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,只适用于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