我一直在尝试运行globus工具包网站中提供的示例驱动程序。这是该计划:
#include "globus_xio.h"
int main(int argc,char *argv[])
{
globus_result_t res;
char * driver_name;
globus_xio_driver_t driver;
globus_xio_stack_t stack;
globus_xio_handle_t handle;
globus_size_t nbytes;
char * contact_string = NULL;
char buf[256];
contact_string = argv[1];
driver_name = argv[2];
globus_module_activate(GLOBUS_XIO_MODULE);
res = globus_xio_driver_load(driver_name,&driver);
assert(res == GLOBUS_SUCCESS);
res = globus_xio_stack_init(&stack, NULL);
assert(res == GLOBUS_SUCCESS);
res = globus_xio_stack_push_driver(stack, driver);
assert(res == GLOBUS_SUCCESS);
res = globus_xio_handle_create(&handle, stack);
assert(res == GLOBUS_SUCCESS);
res = globus_xio_open(handle, contact_string, NULL);
assert(res == GLOBUS_SUCCESS);
do
{
res = globus_xio_read(handle, buf, sizeof(buf) - 1, 1, &nbytes, NULL);
if(nbytes > 0)
{
buf[nbytes] = '\0';
fprintf(stderr, "%s", buf);
}
} while(res == GLOBUS_SUCCESS);
globus_xio_close(handle, NULL);
globus_module_deactivate(GLOBUS_XIO_MODULE);
return 0;
}
当我使用命令
编译它时
cc -I /usr/include/globus globus_xio_example.c
我收到以下错误
/tmp/ccLMLlIi.o: In function `main': globus_xio_example.c:(.text+0x57): undefined reference to `globus_i_xio_module' globus_xio_example.c:(.text+0x5c): undefined reference to `globus_module_activate' globus_xio_example.c:(.text+0x75): undefined reference to `globus_xio_driver_load' globus_xio_example.c:(.text+0xb1): undefined reference to `globus_xio_stack_init' globus_xio_example.c:(.text+0xf2): undefined reference to `globus_xio_stack_push_driver' globus_xio_example.c:(.text+0x133): undefined reference to `globus_xio_handle_create' globus_xio_example.c:(.text+0x179): undefined reference to `globus_xio_open' globus_xio_example.c:(.text+0x1d1): undefined reference to `globus_xio_read' globus_xio_example.c:(.text+0x22b): undefined reference to `globus_xio_close' globus_xio_example.c:(.text+0x230): undefined reference to `globus_i_xio_module' globus_xio_example.c:(.text+0x235): undefined reference to `globus_module_deactivate' collect2: ld returned 1 exit status
答案 0 :(得分:0)
似乎用于编译的命令不足:
cc -I /usr/include/globus globus_xio_example.c
具体来说,链接器进程表明存在许多无法解析的符号。我怀疑用于编译的命令缺少关于需要链接哪些库来解析未定义符号的指令。
提示:
使用' globus-makefile-header'帮助确定库依赖关系。
% globus-makefile-header -flavor=gcc32dbg globus_xio > header
检查'标题'的内容适当的makefile宏 在makefile中包含header并使用所需的makefile宏。
答案 1 :(得分:0)
试试这个gcc -I /usr/include/globus globus_xio_example.c -lglobus_xio -lglobus_common