首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图从js-ctype调用pam_start时未定义的符号

试图从js-ctype调用pam_start时未定义的符号
EN

Stack Overflow用户
提问于 2016-06-11 17:06:58
回答 1查看 1.1K关注 0票数 2

最近我爱上了js-ctype(对于编写需要访问一些底层OS功能的小型应用程序非常方便),我正尝试将它们用于一个小型登录管理器原型,在这里我想公开PAM。

为此,我一直在学习GNU/Linux教程,编译在其^1存储库中找到的pam.c文件,并从我的javascript代码中调用login(const char *username, const char *password, pid_t *child_pid)

我使用以下命令编译库:

  • gcc -fPIC -c pan.c
  • gcc -shared -o pam.so pan.o

javascript调用代码如下(用户和pw是XUL中定义的两个文本框):

代码语言:javascript
复制
function login(user, pw) {
    var {ctypes} = Components.utils.import("resource://gre/modules/ctypes.jsm", null);

    Components.utils.import("resource://gre/modules/Services.jsm");
    var cr = Components.classes['@mozilla.org/chrome/chrome-registry;1'].getService(Components.interfaces.nsIChromeRegistry);

var chromeURI_myLib = Services.io.newURI('chrome://app/content/lib/pam.so', 'UTF-8', null);
var localFile_myLib = cr.convertChromeURL(chromeURI_myLib);
var jarPath_myLib = localFile_myLib.spec;
var filePath_myLib = localFile_myLib.path;

var libc = ctypes.open(filePath_myLib);

/* Import a function */
var loginFunc = libc.declare("login",             /* function name */
                        ctypes.default_abi, /* call ABI */
                        ctypes.int,
                        ctypes.char.ptr,
                        ctypes.char.ptr);

loginFunc(user, pw);
}

不幸的是,当运行应用程序并调用此函数时,应用程序使用以下错误消息退出

symbol lookup error: /login-manager/chrome/content/lib/pam.so: undefined symbol: pam_start

pam_start是在本教程提供的pan.c/amam.h的范围之外定义的。它的定义可以在/usr/lib/security/pam_appl.h中找到。如何减轻这一事实,并创建一个共享对象,使我能够正确地调用作为原始教程login()的一部分提供的logout()^2函数

EN

回答 1

Stack Overflow用户

发布于 2016-07-20 01:27:54

一个月前就修好了。原来是个连接问题。下面是如何针对libpam正确地编译它。

代码语言:javascript
复制
gcc -fPIC -c DM.c
gcc -shared -o DM.so DM.o -lpam
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37766408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档