构建小型smb客户端的未定义参考

时间:2017-12-29 13:04:40

标签: c++ c ubuntu gcc undefined-reference

我有以下问题。我试图在" libdsm"的基础上构建一个小smb客户端。项目。我已经构建了必要的库(libdsm.a和libtasn1.a)。我的smb客户端看到这些静态库,但链接器通知我有未定义的引用。这条消息对我来说很清楚,我已经验证了链接静态库的存在等等。我不知道它为什么会发生。链接器告诉它有什么理由吗?我可以用哪些工具更深入地分析这个问题? 下面我展示了构建库的readelf信息

File: libdsm.a(md4.o)
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              REL (Relocatable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x0
  Start of program headers:          0 (bytes into file)
  Start of section headers:          15128 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           0 (bytes)
  Number of program headers:         0
  Size of section headers:           64 (bytes)
  Number of section headers:         23
  Section header string table index: 20


   17: 0000000000000000    97 FUNC    GLOBAL DEFAULT    1 smb_session_new
    18: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND calloc
    19: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND smb_buffer_init
    20: 0000000000000070    93 FUNC    GLOBAL DEFAULT    1 smb_session_destroy
    21: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND smb_session_share_clear
    22: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND asn1_delete_structure
    23: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND smb_buffer_free
    24: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND free
    25: 00000000000000d0   141 FUNC    GLOBAL DEFAULT    1 smb_session_set_creds
    26: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND __strndup
    27: 0000000000000160   463 FUNC    GLOBAL DEFAULT    1 smb_session_connect
    28: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND smb_transport_nbt

我的小smb客户端的目标文件:

ELF Header:


Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              REL (Relocatable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x0
  Start of program headers:          0 (bytes into file)
  Start of section headers:          2744 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           0 (bytes)
  Number of program headers:         0
  Size of section headers:           64 (bytes)
  Number of section headers:         15
  Section header string table index: 12


Symbol table '.symtab' contains 26 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
    12: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND _Z15smb_session_newv
    13: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND inet_aton
    14: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND _Z19smb_session_connectP1
    15: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND _Z21smb_session_set_creds
    16: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND _Z17smb_session_loginP11s
    17: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND puts
    18: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND _Z16smb_tree_connectP11sm
    19: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND _Z9smb_fopenP11smb_sessio
    20: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND _Z9smb_freadP11smb_sessio
    21: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND _Z10smb_fcloseP11smb_sess
    22: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND _Z19smb_tree_disconnectP1
    23: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND _Z19smb_session_destroyP1

我希望这些额外信息有用。

1 个答案:

答案 0 :(得分:0)

alk,谢谢你的建议。将main.cpp重命名为main.c后,一切正常。对我而言,将客户端编译为c或c ++程序并不重要。