设置共享库的堆栈大小
Set the stack size of a shared library
有没有办法(使用 gcc)设置共享库的堆栈大小?
我构建了一个 .so,其中包含一个使用大缓冲区作为局部变量的函数。
类似的东西:
void foo ( void )
{
int table [1000000] ; // 4 millions bytes table !
...
}
我添加了选项 -Wl,-z,stack-size=4100000
但它没有任何效果(甚至没有错误消息)。
顺便说一句,这个库是为了从 java 代码(使用 JNA)调用。
由于我没有找到关于这个奇特问题的任何post,恐怕这不可能......
不,这是不可能的 - 来自共享库的函数在调用它们的线程的上下文中工作,并且该线程将是主应用程序线程(在 main
中启动)或创建的线程Pthreads(将在 pthread_create
的线程创建时分配堆栈)。
-Wl,-z,stack-size
标志仅适用于应用程序,不适用于库,并设置主线程堆栈的大小。
有没有办法(使用 gcc)设置共享库的堆栈大小?
我构建了一个 .so,其中包含一个使用大缓冲区作为局部变量的函数。
类似的东西:
void foo ( void )
{
int table [1000000] ; // 4 millions bytes table !
...
}
我添加了选项 -Wl,-z,stack-size=4100000
但它没有任何效果(甚至没有错误消息)。
顺便说一句,这个库是为了从 java 代码(使用 JNA)调用。
由于我没有找到关于这个奇特问题的任何post,恐怕这不可能......
不,这是不可能的 - 来自共享库的函数在调用它们的线程的上下文中工作,并且该线程将是主应用程序线程(在 main
中启动)或创建的线程Pthreads(将在 pthread_create
的线程创建时分配堆栈)。
-Wl,-z,stack-size
标志仅适用于应用程序,不适用于库,并设置主线程堆栈的大小。