Thực tiễn tiêu chuẩn trong loại tình huống này là sử dụng tệp mặc định của trang Autoconf chứa các giá trị phù hợp cho các bài kiểm tra configuremuốn chạy.
Trong trường hợp cụ thể này, configuređang cố gắng xác định hướng phát triển của ngăn xếp:
volatile int *a = 0, *b = 0;
void f (int i) { volatile int x = 5; if (i == 0) b = &x; else f (i - 1); }
int main () { volatile int y = 7; a = &y; f (100); return b > a ? 0 : 1; }
Vì vậy, bạn sẽ biên dịch chéo mã đó, chạy nó trên nền tảng đích của bạn và kiểm tra mã thoát ( echo $?). Ví dụ config.arm-hisiv400-linux, tạo một tệp mặc định cho kiến trúc đích của bạn và thêm một dòng với
glib_cv_stack_grows=yes
(nếu mã thoát ở trên là 0) hoặc
glib_cv_stack_grows=no
(nếu mã thoát là 1).
Sau đó chạy configurevới CONFIG_SITEchỉ vào đường dẫn đầy đủ của tệp mặc định của trang bạn vừa tạo:
CONFIG_SITE=/path/to/config.arm-hisiv400-linux ./configure --prefix=$HOME --host=arm-hisiv400-linux
configurenên sử dụng giá trị từ tệp mặc định của trang, bỏ qua kiểm tra cho ngăn xếp. Nó có thể sẽ thất bại trong bài kiểm tra tiếp theo cần chạy chương trình được biên dịch cho mục tiêu, nhưng bạn có thể sửa nó theo cách tương tự, thêm nhiều mục vào tệp mặc định của trang (miễn là configure.acsử dụng AC_CACHE_VALxung quanh AC_TRY_RUN).
./configure --helpcó thể giúp.