Unable to reference sysfs on Linux.


 
Thread Tools Search this Thread
Top Forums Programming Unable to reference sysfs on Linux.
# 1  
Old 12-13-2005
Unable to reference sysfs on Linux.

I am porting C code to a linux system but I am unable to link a call to the sysfs function.

An excerpt from my code is:

Code:
if (fstat(fileno(TrCtl.Fp), &fsstat) != -1)
{
    (void) sysfs(1, fsname);
    if (strcmp(fsname, "nfs"))
    {
        (void) lockf(fileno(TrCtl.Fp), F_LOCK, 0L);
    }
}

This code is compiled into a library, but when linked to the main executable I get the following error:

Code:
/usr/bin/gcc -o oracle_connect oracle_connect.o -L /usr/lib -L /home/mb/build/dev/Lib -ltrace /home/mb/build/dev/Lib/libtrace.a

(traceopen.o)(.text+0x172): In function `traceopen':
: undefined reference to `sysfs'
collect2: ld returned 1 exit status

The man page suggests that I do not need to reference any particular headers or files.

I have checked the libc library and it does contain sysfs.o,
but I am at loss as how to reference it.

Does any one know? Is it even possible in Linux?


My versions are:

Red Hat Enterprise Linux AS release 3 (Taroon)
Linux ccabccesd2 2.4.21-4.ELsmp #1 SMP Fri Oct 3 17:52:56 EDT 2003 i686 i686 i38 6 GNU/Linux

Thanks
# 2  
Old 12-13-2005
Code:
/usr/bin/gcc -o oracle_connect oracle_connect.o -L /usr/lib \
     -L /home/mb/build/dev/Lib -ltrace /home/mb/build/dev/Lib/libtrace.a

/usr/bin/gcc -o oracle_connect oracle_connect.o  \
     -L /home/mb/build/dev/Lib -ltrace /home/mb/build/dev/Lib/libtrace.a \
     -L /usr/lib

Try making ld search for symbols in /usr/lib after you declare all your symbols.
# 3  
Old 12-15-2005
Like this?

Code:
/usr/bin/gcc    -DTRACE_ON -I/home/app/oracle/product/10.1.0/Db_1/precomp/public
 -I/home/mb/build/dev/Include -c ec2pc.c

/usr/bin/gcc -o ec2pc ec2pc.o -L /home/app/oracle/product/10.1.0/Db_1/lib -lsqlplus -L /home/mb/build/dev/Lib -ltrace -L /usr/lib
/home/mb/build/dev/Lib/libtrace.a(traceopen.o)(.text+0x172): In function `traceopen':
: undefined reference to `sysfs'
collect2: ld returned 1 exit status

Thanks for the idea, but no. It makes no difference.
# 4  
Old 12-15-2005
On my box sysfs in defined in libc.0 which is a link to the current version of libc.
Which is where you'd expect it to be....
try to find where sysfs is located:
Code:
 for file in *
 do
 nm $file | grep sysfs
 if [ $? -eq 0 ]; then
       echo $file
 fi
 done

look for the entry point:
sysfs | 0|sdef |code |$CODE$

If all else fails then link against libc.a as the very last step in the link statement.
Assuming that nm shows it to be in there. Your compiler does support sysfs ie., it's in the man pages?
# 5  
Old 12-16-2005
Yay, sysfs is indeed in the man pages and describes 3 variants.

I had already searched through the libraries using ar, and found sysfs.o in libc.a! Within the same library archive are the standard goodies such as printf and I have no trouble with this function.

Is it possible that it is not supported? In my man page there is a cryptic statement which may suggest this: "There is no libc or glibc support."
# 6  
Old 12-16-2005
It's very possible it is not supported. Unix systems have various "standards" like SVS2, POSIX.

sysfs is not POSIX according to Steven's book edition #2.
Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

GPIO and sysfs

I was recently working on a project where some gpio pins were being toggled from within the user space: const char *const amplifierGPIO = "/sys/class/gpio/gpio107/value"; void amplifierUnmute() { std::ofstream amp(amplifierGPIO); if (amp.is_open()) { ... (3 Replies)
Discussion started by: Circuits
3 Replies

2. SuSE

Unable to format suse Linux

Hello All, I am new to use linux. I installed SUSE Linux Enterprise Server 11 (x86_64) trail version which is free for 60 days. Now I want to again format the whole system and install the same OS again but its not happening. I am trying with a bootable pen drive which has an .iso image of... (1 Reply)
Discussion started by: hunk_harsha
1 Replies

3. Shell Programming and Scripting

Perl de-reference code reference variable

Guys, May i know how can we de reference the code reference variable.? my $a = sub{$a=shift;$b=shift;print "SUM:",($a+$b),"\n";}; print $a->(4,5); How can we print the whole function ? Please suggest me regarding this. Thanks for your time :) Cheers, Ranga :) (0 Replies)
Discussion started by: rangarasan
0 Replies

4. UNIX for Dummies Questions & Answers

Unable to remove folder in linux

Hi I am using red hat linux, In my folder a strange folder is created i.e. " -a " , folder name is preceded with hyphen. Now if i try to remove with rm -rf -1 , i am unable to do it. Can anyone please let me know how to do it, & what this kind of folder means Thanks Sarbjit (3 Replies)
Discussion started by: sarbjit
3 Replies

5. Red Hat

unable to communicate with Linux machine

Hi all, I installed red hat 2.6.9-5 and when I am trying to ping it.I am able to ping any other machine in the network but unable to do vice-versa(means unable to ping this machine from any other machine) and getting the message -- please provide your valuable suggestions ... (2 Replies)
Discussion started by: smartgupta
2 Replies

6. Linux

Query about creating sysfs directory under device driver

Hi all, Currently i am involved in developing a device driver for a custom hardware. My linux stack already has the sysfs directory structure /sys/class/hwmon/ My need is that, while loading my device driver i need to create a "xyz" sysfs directory inside hwmon sysfs directory as... (0 Replies)
Discussion started by: cbalu
0 Replies

7. Red Hat

Unable to transfer files from xp to linux

hello to everyone, need your expertise with regards to linux. one of the systems engineer in our project created a ftp account in redhat linux. i'm using xftp for file transfer, the given ftp useraccount were able to login in the ftp browser, but the problem occurs when transfering files from xp... (10 Replies)
Discussion started by: gob23g
10 Replies

8. Cybersecurity

Unable to configure samba on linux 7.1

Hello I am able to connect from Linux machine to Windows machine, but i can not connect from Windows to Linux. Even i can print also from linux to windows... what could be the problem... pl help. thanks (5 Replies)
Discussion started by: twadkar
5 Replies
Login or Register to Ask a Question