라즈베리파이에 올릴 용도로 buildroot의 LTS판 최신버전(2020.02.8)을 php 포함하여 빌드하는 중 아레와같은 빌드 에러가 발생하였다.
ext/standard/crc32.c:48:10: error: ‘armv8-a’ does not support feature ‘nothing’
# pragma GCC target ("+nothing+crc")
^~~
ext/standard/crc32.c:48:10: note: valid feature names are: crc simd crypto nocrypto nofp
ext/standard/crc32.c:48:10: error: ‘armv8-a’ does not support feature ‘nothing’
ext/standard/crc32.c:48:10: note: valid feature names are: crc simd crypto nocrypto nofp
ext/standard/crc32.c:49:1: error: ‘armv8-a’ does not support feature ‘nothing’
static uint32_t crc32_aarch64(uint32_t crc, char *p, size_t nr) {
^~~~~~
ext/standard/crc32.c:49:1: note: valid feature names are: crc simd crypto nocrypto nofp
ext/standard/crc32.c:49:1: error: ‘armv8-a’ does not support feature ‘nothing’
ext/standard/crc32.c:49:1: note: valid feature names are: crc simd crypto nocrypto nofp
ext/standard/crc32.c: In function ‘crc32_aarch64’:
ext/standard/crc32.c:49:1: error: ‘armv8-a’ does not support feature ‘nothing’
ext/standard/crc32.c:49:1: note: valid feature names are: crc simd crypto nocrypto nofp
ext/standard/crc32.c:49:17: error: ‘armv8-a’ does not support feature ‘nothing’
static uint32_t crc32_aarch64(uint32_t crc, char *p, size_t nr) {
^~~~~~~~~~~~~
ext/standard/crc32.c:49:17: note: valid feature names are: crc simd crypto nocrypto nofp
make[1]: *** [Makefile:967: ext/standard/crc32.lo] Error 1
구글링해보니 해당 파일의 위 에러가 발생하는 “+nothing+crc” 부분을 “arch=armv8-a+crc”로 바꾸니 해결되었다. 일부러 +nothing을 넣은건지 알수없고… 에러 내용도 보면 armv8-a에선 nothing을 지원하지 않는다. 이정도로 해석된다.
저런식으로 일단 빌드 안되게 해둔것이 빌드 대상 아키텍쳐가 crc 명령을 지원하는지 유무를 빌드 된 바이너리 레벨에서 확인이 안되어서 인가? 명령이 지원 안하면 실행 시 에러가 발생할것이니 빌드 레벨에서 대상 타겟이 무엇인지 명시적으로 정의를 하는것 같기도하고 음… 나중에 생각이 나고 기회가 되면 파고들어봐야겠다.