0

有没有办法(使用 gcc)来设置共享库的堆栈大小?
我构建了一个.so,其中包含一个使用大缓冲区作为局部变量的函数。
像这样的东西:

void foo ( void )
    {
    int table [1000000] ; // 4 millions bytes table !
    ...
    }

我添加了该选项-Wl,-z,stack-size=4100000,但它没有效果(甚至没有错误消息)。
顺便说一句,这个库是从java代码调用的(使用JNA)。
由于我没有找到有关此特殊问题的任何帖子,因此恐怕不可能...

4

1 回答 1

1

不,这是不可能的 - 共享库中的函数在调用它们的线程上下文中工作,并且该线程将是主应用程序线程(在 开始main)或使用 Pthreads 创建的线程(将在线程创建时分配堆栈时间pthread_create)。

-Wl,-z,stack-sizeflag 仅适用于应用程序,不适用于库,并设置主线程堆栈的大小。

于 2021-03-16T17:41:12.120 回答