有没有一种方法(使用gcc)来设置共享库的堆栈大小?
我构建了一个包含单个函数的.so,该函数使用一个大缓冲区作为局部变量。
就像这样:
void foo ( void )
{
int table [1000000] ; // 4 millions bytes table !
...
}我添加了选项-Wl,-z,stack-size=4100000,但它没有效率(甚至没有错误消息)。
顺便说一句,这个库是从java代码(使用JNA)调用的。
因为我没有找到任何关于这个奇怪问题的帖子,恐怕这不可能.
发布于 2021-03-16 17:41:12
不,这是不可能的--在调用它们的线程上下文中,来自共享库工作的函数,该线程要么是一个主应用程序线程(在main中启动),要么是一个用P线程创建的线程(在pthread_create中线程创建时将分配堆栈)。
-Wl,-z,stack-size标志只适用于应用程序,而不适用于库,并设置主线程堆栈的大小。
https://stackoverflow.com/questions/66657506
复制相似问题