Agent Skills
› A-EVO-Lab/a-evolve
› build-compiled-extensions
build-compiled-extensions
GitHub指导从源码构建C/C++/Cython扩展及大型框架(如Caffe),涵盖环境准备、编译流程、依赖冲突处理及验证方法。
Trigger Scenarios
需要编译Python C扩展
构建Caffe等C++框架
pip install超时或失败
Install
npx skills add A-EVO-Lab/a-evolve --skill build-compiled-extensions -g -y
SKILL.md
Frontmatter
{
"name": "build-compiled-extensions",
"description": "How to build C\/C++\/Cython\/Fortran extensions and frameworks like Caffe, OpenCV, protobuf-dependent projects from source."
}
Building Compiled Extensions & Frameworks
Pre-flight
pip install setuptools wheel cython 2>/dev/null
apt-get install -y build-essential python3-dev 2>/dev/null
Cython extension workflow
cython file.pyx # Cythonize to .c first
python setup.py build_ext --inplace 2>&1
# Manual fallback:
gcc -shared -fPIC -O2 $(python3-config --includes) -o mod$(python3-config --extension-suffix) mod.c
Building large C++ frameworks (Caffe, etc.)
- Check protobuf version:
protoc --versionanddpkg -l | grep protobuf - Fix API incompatibilities before building (see debug-and-fix skill)
- Use
make -j$(nproc)but capture errors:make 2>&1 | tee build.log - For Caffe specifically:
- Set
CPU_ONLY := 1in Makefile.config for non-GPU environments - Fix protobuf SetTotalBytesLimit calls for newer protobuf
- Use
make all -j$(nproc) && make test && make runtest
- Set
When pip install times out
- Install dependencies individually first:
pip install numpy scipy - Build extensions only:
python setup.py build_ext --inplace - Or:
pip install --no-deps -e .
Common pitfalls
- Missing numpy headers:
pip install numpybefore building numpy-dependent C extensions - Import from wrong dir: Test from
/tmp, not the source directory - Protobuf mismatch: Check version and fix API calls before compiling
Verification
find . -name "*.so" -newer setup.py
cd /tmp && python -c "import mypackage; print('OK')"
Version History
- c9d4789 Current 2026-07-25 07:28


