请教:如何知道当前所用的gcc调用的是哪个版本的glibc库?及这个glibc库的位置?谢谢!

http://topic.csdn.net/u/20090608/15/36bf4a6c-cdf5-4e05-90f3-c0ac0d3f6743.html?5823

 

请教:如何知道当前所用的gcc调用的是哪个版本的glibc库?及这个glibc库的位置?谢谢! 
 
 加为好友
发送私信
在线聊天
yaoike
想念着Run的Ike
等级:
可用分等级:乞丐
总技术分:1
总技术分排名:331475
结帖率:100.00%

 发表于:2009-06-08 15:24:48 楼主
如题:我的虚拟机上有gcc 和 arm-uclinux-gcc ,但我不知道gcc 调用的是哪个版本的glibc程序库,
    以及该库存放在什么地方?同理,arm-uclinux-gcc 调用的是哪个版本的uClibc库,及该库的位置,
    请大家指点一下,非常感谢!
 
 
问题点数:60 回复次数:12 显示所有回复显示星级回复显示楼主回复 修改 删除 举报 引用 回复  
 

 加为好友
发送私信
在线聊天
 xperson
xperson
等级:
可用分等级:大财主
总技术分:0
总技术分排名:353129

 发表于:2009-06-08 15:57:581楼 得分:0
使用ldd指令 可以看到程序连接的动态库
如下
[root@R020 ~]# ldd /bin/ls
        linux-gate.so.1 =>  (0x0016b000)
        librt.so.1 => /lib/librt.so.1 (0x48319000)
        libacl.so.1 => /lib/libacl.so.1 (0x41b1f000)
        libselinux.so.1 => /lib/libselinux.so.1 (0x48324000)
        libc.so.6 => /lib/libc.so.6 (0x41991000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x4cb7d000)
        /lib/ld-linux.so.2 (0x4196f000)
        libattr.so.1 => /lib/libattr.so.1 (0x41b18000)
        libdl.so.2 => /lib/libdl.so.2 (0x4c908000)
        libsepol.so.1 => /lib/libsepol.so.1 (0x41b38000)
直接在shell下运行libc.so.6可以得到c library版本
[root@R020 ~]# /lib/libc.so.6
GNU C Library stable release version 2.5, by Roland McGrath et al.
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.1.1 20061011 (Red Hat 4.1.1-30).
Compiled on a Linux 2.6.9 system on 2007-03-14.
Available extensions:
        The C stubs add-on version 2.1.2.
        crypt add-on version 2.1 by Michael Glad and others
        GNU Libidn by Simon Josefsson
        GNU libio by Per Bothner
        NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
        Native POSIX Threads Library by Ulrich Drepper et al
        BIND-8.2.3-T5B
        RT using linux kernel aio
Thread-local storage support included.
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.
 
修改 删除 举报 引用 回复  
 
 加为好友
发送私信
在线聊天
 puheavy123
manifoldyu
等级:
可用分等级:乞丐
总技术分:2394
总技术分排名:9743
 发表于:2009-06-08 16:06:372楼 得分:0
用strace跟踪一下,什么都出来了,当让,ls的ldd也很好用
 
修改 删除 举报 引用 回复  
 
 加为好友
发送私信
在线聊天
 yaoike
想念着Run的Ike
等级:
可用分等级:乞丐
总技术分:1
总技术分排名:331475

 发表于:2009-06-08 16:07:393楼 得分:0
非常感谢!!!
  那如果我写了一个hello.c 的C源文件,我用
  gcc 编译: gcc -g -o ./hello ./hello.c
  编译出来的hello后,我用你所说的方法,
  [root@R020 ~]# ldd ./hello
  [root@R020 ~]# /lib/libc.so.6

  就可以知道该gcc编译时,链接的是哪个版本的glibc库了吗?同样的道理,
  arm-uclinux-gcc  -g -o ./armHello ./hello.c 后,
  再
  [root@R020 ~]# ldd ./armHello
  ...
也可以知道arm-uclinux-gcc用的是哪个版本的uClibc库。
 
修改 删除 举报 引用 回复  
 
 加为好友
发送私信
在线聊天
 yaoike
想念着Run的Ike
等级:
可用分等级:乞丐
总技术分:1
总技术分排名:331475

 发表于:2009-06-08 16:14:144楼 得分:0
非常感谢!!!
用strace 可以吗?
  我试了一下,打印如下:
[root@localhost programTest]# strace ./mktimeTest
execve("./mktimeTest", ["./mktimeTest"], [/* 30 vars */]) = 0
brk(0)                                  = 0x98f6000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f54000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=99498, ...}) = 0
mmap2(NULL, 99498, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f3b000
close(3)                                = 0
open("/lib/i686/nosegneg/libc.so.6", O_RDONLY) = 3
read(3, "/177ELF/1/1/1/0/0/0/0/0/0/0/0/0/3/0/3/0/1/0/0/0pP/222I"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1589336, ...}) = 0
mmap2(0x4990f000, 1312164, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4990f000
mmap2(0x49a4a000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13a) = 0x49a4a000
mmap2(0x49a4d000, 9636, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x49a4d000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f3a000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f3a6c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0x49a4a000, 8192, PROT_READ)  = 0
mprotect(0x48f59000, 4096, PROT_READ)  = 0
munmap(0xb7f3b000, 99498)              = 0
brk(0)                                  = 0x98f6000
brk(0x9917000)                          = 0x9917000
open("/etc/localtime", O_RDONLY)        = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=165, ...}) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=165, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f53000
read(3, "TZif/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/3/0/0/0/3/0"..., 4096) = 165
close(3)                                = 0
munmap(0xb7f53000, 4096)                = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f53000
write(1, "tCur = 1243395000/n", 18tCur = 1243395000
)    = 18
write(1, "tmCurComp: 2009, 5, 27, 11, 30, "..., 34tmCurComp: 2009, 5, 27, 11, 30, 0
) = 34
write(1, "ctime(tCur) = Wed May 27 11:30:0"..., 39ctime(tCur) = Wed May 27 11:30:00 2009
) = 39
write(1, "/n", 1
)                      = 1
time(NULL)                              = 1243958924
write(1, "time(NULL) = 1243958924/n", 24time(NULL) = 1243958924
) = 24
time(NULL)                              = 1243958924
write(1, "ctime(&(time(NULL))) = Wed Jun  "..., 48ctime(&(time(NULL))) = Wed Jun  3 00:08:44 2009
) = 48
write(1, "/n", 1
)                      = 1
exit_group(0)                          = ?
Process 10278 detached

那要怎么看啊?还有,gcc调用的那个glibc的位置在哪呀?可否再费心解释一下。谢谢!
 
 
修改 删除 举报 引用 回复  
 
 加为好友
发送私信
在线聊天
 puheavy123
manifoldyu
等级:
可用分等级:乞丐
总技术分:2394
总技术分排名:9743
 发表于:2009-06-08 16:15:055楼 得分:0
可以追踪动态链接库

strace的信息详细一点
 
修改 删除 举报 引用 回复  
 
 加为好友
发送私信
在线聊天
 yaoike
想念着Run的Ike
等级:
可用分等级:乞丐
总技术分:1
总技术分排名:331475

 发表于:2009-06-08 16:39:196楼 得分:0
你是说,这样子输入吗?

[root@localhost programTest]# ldd ./mktimeTest
        linux-gate.so.1 =>  (0x007e2000)
        libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x4990f000)
        /lib/ld-linux.so.2 (0x48f40000)

[root@localhost programTest]# strace /lib/i686/nosegneg/libc.so.6
execve("/lib/i686/nosegneg/libc.so.6", ["/lib/i686/nosegneg/libc.so.6"], [/* 30                                              vars */]) = 0
brk(0)                                  = 0x4b46d000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7                                            fee000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7                                            fed000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7fed6c0, limit:1048575, seg_                                            32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, usea                                            ble:1}) = 0
mprotect(0x49a4a000, 8192, PROT_READ)  = 0
mprotect(0x48f59000, 4096, PROT_READ)  = 0
write(1, "GNU C Library stable release ver"..., 819GNU C Library stable release                                              version 2.5, by Roland McGrath et al.
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.1.1 20060928 (Red Hat 4.1.1-28).
Compiled on a Linux 2.6.9 system on 2006-10-08.
Available extensions:
        The C stubs add-on version 2.1.2.
        crypt add-on version 2.1 by Michael Glad and others
        GNU Libidn by Simon Josefsson
        GNU libio by Per Bothner
        NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
        Native POSIX Threads Library by Ulrich Drepper et al
        BIND-8.2.3-T5B
        RT using linux kernel aio
Thread-local storage support included.
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.
) = 819
exit_group(0)                          = ?
Process 10329 detached
[root@localhost programTest]# strace /lib/i686/nosegneg/libc.so.6
execve("/lib/i686/nosegneg/libc.so.6", ["/lib/i686/nosegneg/libc.so.6"], [/* 30 vars */]) = 0
brk(0)                                  = 0x4a700000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f50000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f4f000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f4f6c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0x49a4a000, 8192, PROT_READ)  = 0
mprotect(0x48f59000, 4096, PROT_READ)  = 0
write(1, "GNU C Library stable release ver"..., 819GNU C Library stable release version 2.5, by Roland McGrath et al.
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.1.1 20060928 (Red Hat 4.1.1-28).
Compiled on a Linux 2.6.9 system on 2006-10-08.
Available extensions:
        The C stubs add-on version 2.1.2.
        crypt add-on version 2.1 by Michael Glad and others
        GNU Libidn by Simon Josefsson
        GNU libio by Per Bothner
        NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
        Native POSIX Threads Library by Ulrich Drepper et al
        BIND-8.2.3-T5B
        RT using linux kernel aio
Thread-local storage support included.
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.
) = 819
exit_group(0)                          = ?
Process 10334 detached


这样子,就可以知道该gcc调用的glibc的版本号是2.5,对吧,那该glibc库(源代码)的位置在哪呢?


 
 
修改 删除 举报 引用 回复  
 
 加为好友
发送私信
在线聊天
 puheavy123
manifoldyu
等级:
可用分等级:乞丐
总技术分:2394
总技术分排名:9743
 发表于:2009-06-08 16:46:157楼 得分:0
再通过这种方法调用一次

strace gcc -g -o ./hello ./hello.c

你可以结合其他工具来过滤信息的嘛。。。。这样你就可以更容易的看到glibc库(源代码)的位置了
 
修改 删除 举报 引用 回复  
 
 加为好友
发送私信
在线聊天
 yaoike
想念着Run的Ike
等级:
可用分等级:乞丐
总技术分:1
总技术分排名:331475

 发表于:2009-06-08 17:17:318楼 得分:0
非常感谢!
我这样操作:
  [root@localhost programTest]# arm-uclibc-linux-gcc -g -o ./armSscanfTest sscanfTest.c

  [root@localhost programTest]# ldd ./armSscanfTest
        not a dynamic executable


这是为什么呀?我还是看不到arm-uclibc-linux-gcc 调用的是哪个uClibc库啊?
 
 
修改 删除 举报 引用 回复  
 
 加为好友
发送私信
在线聊天
 yaoike
想念着Run的Ike
等级:
可用分等级:乞丐
总技术分:1
总技术分排名:331475

 发表于:2009-06-08 17:28:349楼 得分:0
而我这样子操作:
[root@localhost programTest]# strace arm-uclibc-linux-gcc -g -o ./armSscanfTest sscanfTest.c
execve("/opt/hisilicon/toolchains/arm-uclibc-linux-soft/bin/arm-uclibc-linux-gcc", ["arm-uclibc-linux-gcc", "-g", "-o", "./armSscanfTest", "sscanfTest.c"], [/* 30 vars */]) = 0
brk(0)                                  = 0x8222000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f3a000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=99498, ...}) = 0
mmap2(NULL, 99498, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f21000
close(3)                                = 0
open("/lib/i686/nosegneg/libc.so.6", O_RDONLY) = 3
read(3, "/177ELF/1/1/1/0/0/0/0/0/0/0/0/0/3/0/3/0/1/0/0/0pP/222I"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1589336, ...}) = 0
mmap2(0x4990f000, 1312164, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4990f000
mmap2(0x49a4a000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13a) = 0x49a4a000
mmap2(0x49a4d000, 9636, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x49a4d000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f20000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f206c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0x49a4a000, 8192, PROT_READ)  = 0
mprotect(0x48f59000, 4096, PROT_READ)  = 0
munmap(0xb7f21000, 99498)              = 0
brk(0)                                  = 0x8222000
brk(0x8243000)                          = 0x8243000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=55557696, ...}) = 0
mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7d20000
close(3)                                = 0
rt_sigaction(SIGINT, {SIG_IGN}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGINT, {0x804ab44, [INT], SA_RESTART}, {SIG_IGN}, 8) = 0
rt_sigaction(SIGHUP, {SIG_IGN}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGHUP, {0x804ab44, [HUP], SA_RESTART}, {SIG_IGN}, 8) = 0
rt_sigaction(SIGTERM, {SIG_IGN}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGTERM, {0x804ab44, [TERM], SA_RESTART}, {SIG_IGN}, 8) = 0
rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGPIPE, {0x804ab44, [PIPE], SA_RESTART}, {SIG_IGN}, 8) = 0
rt_sigaction(SIGCHLD, {SIG_DFL}, {SIG_DFL}, 8) = 0
access("/usr/lib/qt-3.3/bin/arm-uclibc-linux-gcc", X_OK) = -1 ENOENT (No such file or directory)
access("/usr/kerberos/sbin/arm-uclibc-linux-gcc", X_OK) = -1 ENOENT (No such file or directory)
access("/usr/kerberos/bin/arm-uclibc-linux-gcc", X_OK) = -1 ENOENT (No such file or directory)
access("/usr/local/sbin/arm-uclibc-linux-gcc", X_OK) = -1 ENOENT (No such file or directory)
access("/usr/local/bin/arm-uclibc-linux-gcc", X_OK) = -1 ENOENT (No such file or directory)
access("/sbin/arm-uclibc-linux-gcc", X_OK) = -1 ENOENT (No such file or directory)
access("/bin/arm-uclibc-linux-gcc", X_OK) = -1 ENOENT (No such file or directory)
access("/usr/sbin/arm-uclibc-linux-gcc", X_OK) = -1 ENOENT (No such file or directory)
access("/usr/bin/arm-uclibc-linux-gcc", X_OK) = -1 ENOENT (No such file or directory)
access("/opt/hisilicon/toolchains/arm-uclibc-linux-soft/bin/arm-uclibc-linux-gcc", X_OK) = 0
lstat64("/opt", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/opt/hisilicon", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/opt/hisilicon/toolchains", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/opt/hisilicon/toolchains/arm-uclibc-linux-soft", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/opt/hisilicon/toolchains/arm-uclibc-linux-soft/bin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/opt/hisilicon/toolchains/arm-uclibc-linux-soft/bin/arm-uclibc-linux-gcc", {st_mode=S_IFREG|0744, st_size=163875, ...}) = 0
access("/usr/lib/qt-3.3/bin/arm-uclibc-linux-gcc", X_OK) = -1 ENOENT (No such file or directory)
access("/usr/kerberos/sbin/arm-uclibc-linux-gcc", X_OK) = -1 ENOENT (No such file or directory)
access("/usr/kerberos/bin/arm-uclibc-linux-gcc", X_OK) = -1 ENOENT (No such file or directory)
access("/usr/local/sbin/arm-uclibc-linux-gcc", X_OK) = -1 ENOENT (No such file or directory)
...(这里省略了一些)
stat64("/tmp/cctrRlhv.s", {st_mode=S_IFREG|0600, st_size=5668, ...}) = 0
unlink("/tmp/cctrRlhv.s")              = 0
exit_group(0)                          = ?
Process 10484 detached


显示的结果是"/lib/i686/nosegneg/libc.so.6", 那arm-uclinux-gcc 的调用库也是glibc罗,那感觉好像不对呀?
 
修改 删除 举报 引用 回复  
 
 加为好友
发送私信
在线聊天
 puheavy123
manifoldyu
等级:
可用分等级:乞丐
总技术分:2394
总技术分排名:9743
 发表于:2009-06-08 17:32:4710楼 得分:0
如果你说不对的话,那我就没法说了,这个是系统跟踪日志。。。
 
修改 删除 举报 引用 回复  
 
 加为好友
发送私信
在线聊天
 yaoike
想念着Run的Ike
等级:
可用分等级:乞丐
总技术分:1
总技术分排名:331475

 发表于:2009-06-08 18:29:3611楼 得分:0
还有一点很奇怪的是:

[root@localhost programTest]# arm-uclibc-linux-gcc -g -o ./armMktimeTest ./mktimeTest.c
[root@localhost programTest]# file ./armMktimeTest
    ./armMktimeTest: ELF 32-bit LSB executable, ARM, version 1 (ARM), dynamically linked    (uses shared libs), not stripped
[root@localhost programTest]# ldd ./armMktimeTest
    not a dynamic executable

这是为什么呢?明明是动态链接的啊?为什么ldd会看不到链接的库呢?是不是要用
arm-uclibc-linux-ldd ./armMktimeTest
呀?可是我这里却没有这个命令?
 
 
修改 删除 举报 引用 回复  
 
 加为好友
发送私信
在线聊天
 yaoike
想念着Run的Ike
等级:
可用分等级:乞丐
总技术分:1
总技术分排名:331475

 发表于:2009-06-09 18:14:1112楼 得分:0
自己顶一下,再次重复之前的问题:

还有一点很奇怪的是:

[root@localhost programTest]# arm-uclibc-linux-gcc -g -o ./armMktimeTest ./mktimeTest.c
[root@localhost programTest]# file ./armMktimeTest
    ./armMktimeTest: ELF 32-bit LSB executable, ARM, version 1 (ARM), dynamically linked    (uses shared libs), not stripped
[root@localhost programTest]# ldd ./armMktimeTest
    not a dynamic executable

这是为什么呢?明明是动态链接的啊?为什么ldd会看不到链接的库呢?是不是要用
arm-uclibc-linux-ldd ./armMktimeTest
呀?可是我这里却没有这个命令? 
 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值