0 前言
前段时间在Mac上运行C程序,需要调用gsl库,使用过程中遇到一些问题,在网上找了不少博客才解决,在此记录下。
1 安装gsl库
- 首先需要安装
Homebrew
和gcc
,可参考Mac安装Homebrew和M1芯片Mac安装gcc - 使用brew命令安装gsl(2024-06版本为
2.7.1
)
brew install gsl
- 等待安装完成即可
- 默认安装路径为
/opt/homebrew/Cellar/gsl/2.7.1
2 配置gsl库
- 进入终端,打开根目录下的
.zprofile
文件
vim .zprofile
- 在文件末尾添加头文件路径至C检索目录
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/opt/homebrew/Cellar/gsl/2.7.1/include
- 在文件末尾添加链接库至检索C/C++目录
export LIBRARY_PATH=$LIBRARY_PATH:/opt/homebrew/Cellar/gsl/2.7.1/lib
- 保存并关闭文件,然后重新加载
source .zprofile
- 在终端输入如下命令(
cpp-13
是因为我安装的gcc
版本是13.x
),如果能看到/opt/homebrew/Cellar/gsl/2.7.1/include
路径,则说明头文件路径已经能够被检索
cpp-13 -v
- 在终端输入如下命令,返回值一致则说明链接库已经配置成功
# 命令
gsl-config --libs
# 返回值
-L/opt/homebrew/Cellar/gsl/2.7.1/lib -lgsl -lgslcblas
3 补充
3.1 clang与GNU GCC
- M1 Mac默认安装有
clang
用于编译C程序,因此直接使用gcc
调用的是clang
,测试如下
# 命令
gcc -v
# 返回值
Apple clang version 15.0.0 (clang-1500.3.9.4)
Target: arm64-apple-darwin23.4.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
- 如果想调用
GNU GCC
,则需要加上版本号,如13.x
版本加上-13
,测试如下
# 命令
gcc-13 --version
# 返回值
gcc-13 (Homebrew GCC 13.2.0) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- 确定
GNU GCC
的版本号,可以用gfortran
的版本查看,返回值中13.2.0
即为当前安装的GNU GCC
版本
# 命令
gfortran --version
# 返回值
GNU Fortran (Homebrew GCC 13.2.0) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
clang
与GNU GCC
在某些命令上存在差异,因此是不能直接互相替代的,比如-fopenmp
命令在前者会报错
3.2 其他调用方式
- 如果不使用第2节的配置,可以使用
-I
和-L
直接指定头文件和链接库路径,只需在编译时加入如下命令即可
-I/opt/homebrew/Cellar/gsl/2.7.1/include -L/opt/homebrew/Cellar/gsl/2.7.1/lib
评论 (0)