【问题标题】:Set the stack size of a shared library设置共享库的堆栈大小
【发布时间】:2021-06-13 20:54:48
【问题描述】:

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

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

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

【问题讨论】:

  • 你试过-Wl,--stack,4100000吗?
  • 感谢 tstanisl,但不幸的是我得到了一个“/usr/bin/ld: unrecognized option '--stack'”

标签: c gcc shared-libraries stack-size


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 2011-07-01
    • 2014-07-31
    相关资源
    最近更新 更多