Sponsored Content
Top Forums Programming [C][RPC][Solaris]Not compiling client/server Post 302587979 by Corona688 on Friday 6th of January 2012 12:17:36 PM
Old 01-06-2012
Keep in mind that include files don't include libraries -- they only tell the compiler what functions ought to exist. So no matter how many include files you add, that will never resolve "undefined external" errors. "unresolved external" means more than one .c or .o file was required to completely build one executable, because they were using parts of each other -- or a library was missing.

You shouldn't be using raw gcc to build your RPC programs. There are many source files, some which need to be compiled together, some which shouldn't, and which belongs where kind of depends on what your RPC generator generated.

Usually you'd do this:

Code:
# Convert your template into code you can fill out.
# It also builds a makefile for you, which knows how to build your server
# and client programs.
rpcgen -a -C mlt.x
vim mlt_server.c # Edit your own code into mlt_server.c
vim mlt_client.c # Edit your own code into mlt_client.c
make -f Makefile.mlt mlt_client mlt_server

When I do that, I get:

Code:
$ make -f Makefile.mlt mlt_server mlt_client
make[1]: Entering directory `/home/username/code/c/1shot/rpc'
cc -g    -c -o mlt_svc.o mlt_svc.c
cc -g    -c -o mlt_server.o mlt_server.c
cc -g    -c -o mlt_xdr.o mlt_xdr.c
cc -g     -o mlt_server  mlt_svc.o mlt_server.o mlt_xdr.o -lnsl
cc -g    -c -o mlt_clnt.o mlt_clnt.c
cc -g    -c -o mlt_client.o mlt_client.c
cc -g     -o mlt_client  mlt_clnt.o mlt_client.o mlt_xdr.o -lnsl
make[1]: Leaving directory `/home/username/code/c/1shot/rpc'

$

So mlt_server needs mlt_svc.c, mlt_server.c, and mlt_xdr.c all at the same time.

And mlt_client needs mlt_clnt.c, mlt_client.c, and mlt_xdr.c all at the same time.

They also both need -lnsl.

---------- Post updated at 11:17 AM ---------- Previous update was at 11:13 AM ----------

Having done all of this, I finally see what the error is.

In the autogenerated code, I find:

Code:
clnt = clnt_create (host, MLT_PROG, MLT_VERS, "udp");

In your code, you have:

Code:
CLIENT *Clnt_create(const char *host, unsigned long prognum, unsigned long versnum, const char *protocol);

C function names are Case Sensitive.
 

8 More Discussions You Might Find Interesting

1. Programming

Creating a client handle in RPC

Hi, I am trying to create a CLIENT handle in RPC on Solaris. I am calling the following function CLIENT *clnt = clnt_create(host, prognum, versnum, nettype); However If I call this in main it seems to work but if I call this function in any other function it fails with a segmentation... (1 Reply)
Discussion started by: pic
1 Replies

2. Linux

NFS Server FC7 Solaris client problems!

Hi, my problem is that I am not able to grand the nfs directory on a Fedora 7 server to a standard solaris client. I always got the messages no permission. Important: No change on the client (Solaris) is possible! So I am not able to change the NFS Version on the client side to force the... (3 Replies)
Discussion started by: joerg
3 Replies

3. Programming

Client/Server Socket Application - Preventing Client from quitting on server crash

Problem - Linux Client/Server Socket Application: Preventing Client from quitting on server crash Hi, I am writing a Linux socket Server and Client using TCP protocol on Ubuntu 9.04 x64. I am having problem trying to implement a scenario where the client should keep running even when the... (2 Replies)
Discussion started by: varun.nagpaal
2 Replies

4. Solaris

RPC: Rpcbind failure - RPC: Timed out error (solaris)

C: Rpcbind failure - RPC: Timed out error (solaris) hello an nfs server on my sun fire v440 is not responding , i get the error bellow and lots of my networking services are not reponding, please helppppp its an emergency RPC: Rpcbind failure - RPC: Timed out i also get NFS server... (2 Replies)
Discussion started by: feg
2 Replies

5. Solaris

Solaris syslog server and client

Hi folks, I am attempting to setup a Solaris 10 syslog server to receive logs from linux machines. Here's what I did: On the server (SunOS sun226 5.10), IP address: 192.168.212.226: 1. start syslogdby issuing $/usr/sbin/syslogd -T On a client (SunOS sun221 5.8): 1. Configured... (1 Reply)
Discussion started by: kimurayuki
1 Replies

6. Red Hat

Nfs client mount RPC Error: Program not registered.

Hello, I was having few issues on my linux box, I am getting this error whenever I tried to mount a share on a client linux host. # mount -t nfs 10.10.4.150:/data/pops_sva /mnt mount: mount to NFS server '10.10.4.150' failed: RPC Error: Program not registered. # I see the error and I... (4 Replies)
Discussion started by: bobby320
4 Replies

7. Solaris

LDAP server and client configuration in Solaris 10

How do i install ldap server and client in solaris server how to configure ldap server and client please help me (1 Reply)
Discussion started by: ainstin
1 Replies

8. Solaris

How to add new Solaris client IP into Solaris 10 DNS server?

Hi, We just built a new Solaris 10 zone. And would like to add it to our DNS server. Its also Solaris 10. Please let me know how can I get the IP resolved using this DNS server. I added entry into zone config file but not working. I did restarted the DNS services. And also added nameserver name... (5 Replies)
Discussion started by: snchaudhari2
5 Replies
rpc(n)								 Tnm Tcl Extension							    rpc(n)

__________________________________________________________________________________________________________________________________________________

NAME
rpc - A simple RPC protocol for Tcl applications. _________________________________________________________________ DESCRIPTION
RPC COMMAND
rpc server port Set up an RPC server listening an port port. This command returns a rpc handle that be used to register Tcl procs that will be exported by a trivial RPC protocol on top of TCP. This RPC mechanism allows us to write cooperating scripts without worrying much about the communication protocol. rpc client host port Connect to the RPC server running on host with port port. The returned client handle can be used to invoke an exported proc on the server host. rpc delete handle Delete a server or a client RPC handle. All connections associated with the handle will be closed. rpc register rpchandle proc Export proc as an RPC callable proc using the server handle rpchandle. Only registered procs can be called by RPC clients. rpc unregister rpchandle proc Remove proc from the list of exported procs on server handle rpchandle. rpc info [rpchandle] Calling rpc info without any arguments returns a list of all rpc handles that have been created using the rpc server and rpc client command. Info about a specific rpc file handle rpchandle is returned by using the optional argument. The result is a list contain- ing the tcp file handle used for the communication and the list of registered commands for a rpc handle and a list of all files that represent connections to an rpc server. This list is empty if rpchandle belongs to a rpc client. rpc# [-async] proc arg1 arg2 ... To invoke a remote procedure proc, use the same syntax as used with a local invocation preceeded by a client rpchandle. The result of the remote procedure call will be returned or an error if the underlying communication channel signals errors. The -async options can be used to invoke proc without waiting for it to complete. The async option will never return a result. SEE ALSO
scotty(1), Tcl(n) AUTHORS
Juergen Schoenwaelder <schoenw@cs.utwente.nl> Tnm rpc(n)
All times are GMT -4. The time now is 11:48 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy