linux下编译objectc

本文详细介绍了如何在iOS上配置GNUstep开发环境,并通过源码安装相关库,最终完成一个简单的hello world应用的编译过程。包括环境配置、库下载与安装、代码实现与编译步骤等关键环节。
编译静态库给ios使用 http://www.tuicool.com/articles/UZr6z2


1. $ yum -y install gcc-objc
2. 从http://wwwmain.gnustep.org下载GNUstep Startup和GNUstep Base,并从源码进行安装。
3.. $ export PATH=$PATH:/usr/GNUstep/System/Tools
4. $ echo "/usr/GNUstep/Local/Library/Libraries/" >> /etc/ld.so.conf
$ ldconfig
5.$ gcc `gnustep-config --objc-flags` -L/usr/GNUstep/Local/Library/Libraries -lgnustep-base hello.m -o hello
6. run program

prepare:
#yum install gcc-objc
#yum install libpng libpng-devel libtiff libtiff-devel libobjc libxml2 libxml2-devel libX11-devel libXt-devel libjpeg libjpeg-devel
#wget ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-startup-0.25.0.tar.gz
#tar zxvf gnustep-startup-0.25.0.tar.gz
#cd gnustep-startup-0.25.0
#./configure
#make
#vi ~/.bashrc加入一行:
/usr/GNUstep/System/Library/Makefiles/GNUstep.sh

把/usr/GNUstep/Local/Library/Libraries/加到系统的lib路径里面
#vi /etc/ld.so.conf 加入下面一行:
/usr/GNUstep/Local/Library/Libraries/

编译环境配置好,写一个test.m并用下面的命令编译:
#gcc `gnustep-config --objc-flags` -L/usr/GNUstep/Local/Library/Libraries -lgnustep-base test.m -o test

#./test
正常的话会正确执行,如果有报“Unknown time zone name `CST'.”,请修改/etc/localtime 设置正确的系统时区
#vi /etc/localtime 清空之前的内容,加入下面的:
TZif2
UTC-8

http://blog.sina.com.cn/s/blog_5326096f0101c3m8.html
<think>我们正在讨论如何在Linux系统下编译json-c库。根据用户需求,我们需要提供详细的步骤。 由于用户提到了“编译”,我们可以假设用户已经下载了json-c的源代码(可能是通过git克隆或下载压缩包)。 以下是典型的编译步骤(基于常见的开源项目编译流程): 1. 获取源代码 2. 配置编译选项(通常使用`configure`脚本) 3. 编译(使用make) 4. 安装(可选,将库安装到系统目录) 但是,请注意,json-c的编译过程可能依赖于一些开发工具和库,因此我们需要确保系统满足依赖。 参考引用[2]中提到了使用tar解压和进入目录的步骤,这类似于我们处理源代码压缩包的方式。 由于json-c是一个C库,我们需要确保系统有gcc、make等基本编译工具,以及autoconf、libtool(因为json-c使用autotools构建)。 具体步骤: 步骤1:安装依赖 在编译之前,我们需要安装必要的构建工具和依赖。在基于Debian的系统(如Ubuntu)上,可以使用以下命令: ```bash sudo apt update sudo apt install build-essential autoconf automake libtool ``` 步骤2:获取源代码 用户可以选择从GitHub克隆最新的源代码,或者下载压缩包。这里我们以克隆为例: ```bash git clone https://github.com/json-c/json-c.git cd json-c ``` 或者,如果用户有压缩包(如tar.gz),则可以参考引用[2]中的解压方式: ```bash tar -xzf json-c-<version>.tar.gz cd json-c-<version> ``` 步骤3:配置项目 在源代码目录中,运行以下命令生成configure脚本(如果是从git克隆,则需要先执行autogen.sh): ```bash ./autogen.sh ``` 然后运行configure脚本。默认配置将安装到/usr/local目录。如果需要自定义安装位置,可以使用--prefix选项。 ```bash ./configure ``` 步骤4:编译 使用make命令编译: ```bash make ``` 步骤5:安装(可选) 如果希望将库安装到系统目录,使用: ```bash sudo make install ``` 安装后,可能需要更新动态链接库缓存: ```bash sudo ldconfig ``` 步骤6:验证 可以编写一个简单的测试程序来验证json-c库是否可用。 注意:如果用户不需要全局安装,也可以不执行`make install`,然后在编译自己的程序时指定头文件和库的路径。 另外,如果用户使用的是其他Linux发行版,安装依赖的命令可能不同(例如,在Fedora上使用dnf,在CentOS上使用yum)。 由于用户问题中提到了引用[1](关于yolov4的编译说明)和引用[2](关于安装tar.gz文件),我们可以借鉴其中解压和配置的步骤。 但是,请注意,json-c的编译过程与yolov4(使用darknet和makefile)有所不同,json-c使用autotools,因此需要先运行autogen.sh和configure。 如果用户遇到权限问题,请确保在安装步骤使用sudo。 现在,我们按照要求生成相关问题。</think>### 在Linux系统下编译json-c库的完整步骤 #### 📦 1. 安装依赖项 在编译前需确保系统有必要的构建工具和依赖库: ```bash # 基于Debian/Ubuntu系统 sudo apt update sudo apt install build-essential autoconf automake libtool git pkg-config ``` #### ⬇ 2. 获取源代码 通过Git克隆官方仓库(推荐): ```bash git clone https://github.com/json-c/json-c.git cd json-c ``` *或下载压缩包后解压(参考引用[2]的解压方式)*: ```bash tar -xzf json-c-0.16.tar.gz # 替换为实际版本号 cd json-c-0.16 ``` #### ⚙ 3. 生成配置脚本 ```bash ./autogen.sh # 生成configure脚本 ``` #### 🔧 4. 配置编译选项 ```bash ./configure \ --prefix=/usr/local \ # 指定安装路径 --enable-shared \ # 生成动态库 --disable-static # 禁用静态库(可选) ``` *提示:使用`./configure --help`查看所有选项* #### 🔨 5. 编译源代码 ```bash make -j$(nproc) # -j参数启用多核编译加速 ``` #### 📥 6. 安装到系统 ```bash sudo make install ``` #### 🔍 7. 验证安装 创建测试文件`test_json.c`: ```c #include <json-c/json.h> int main() { json_object *obj = json_object_new_object(); json_object_object_add(obj, "name", json_object_new_string("Linux")); printf("%s\n", json_object_to_json_string_ext(obj, JSON_C_TO_STRING_PRETTY)); return 0; } ``` 编译并运行: ```bash gcc test_json.c -ljson-c -o test_json ./test_json ``` ✅ 预期输出: ```json { "name":"Linux" } ``` #### 🔧 环境配置(可选) 若出现库找不到错误,执行: ```bash sudo ldconfig # 更新动态链接库缓存 export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH # 临时添加库路径 ``` ### ⚠ 常见问题解决 1. **缺少头文件**: 确保`json.h`路径在`/usr/local/include`,否则编译时添加`-I/usr/local/include` 2. **链接错误**: 编译命令需显式链接库:`gcc ... -ljson-c` 3. **版本兼容问题**: 建议使用最新稳定版,可通过Git标签查看: ```bash git tag -l # 查看可用版本 git checkout json-c-0.16 # 切换到指定版本 ``` ### 📚 技术说明 json-c使用`autotools`构建系统(参考引用[2]的安装流程),其核心功能包括: - JSON解析/序列化(参考引用[3]的JSON结构) - 内存自动管理 - 支持`JSON Pointer`(RFC 6901)和`JSON Patch`(RFC 6902) - 跨平台兼容性(Linux/BSD等)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值