Dear EPICS Tech-Talk Community,
I am in the process of setting up EPICS support for Galil motor controllers, but I have encountered persistent issues with
rebuilding asyn that are preventing me from completing the installation. I would greatly appreciate any guidance in resolving this.
Background
I am rebuilding asyn because I previously ran into linker errors while compiling
busy and Galil , related to missing RPC symbols (xdr_bytes ,
clnt_sperror , etc.). The solution to this issue, as suggested in previous discussions, was to ensure that
asyn properly links against libtirpc (since some Linux distributions no longer include these symbols in
glibc ).
After adding the required libtirpc configurations and reinstalling dependencies, I attempted to
rebuild asyn from scratch. However, the build process does not appear to generate
libasyn.so at all.
Current Issue
-
After running a full rebuild of asyn , the lib/linux-x86_64/ directory remains
empty (total 0 ).
-
I am encountering this error during the build process:
make[2]: *** No rule to make target '../../lib/linux-x86_64/libtirpc.a', needed by 'libasyn.so'. Stop.
make[2]: Leaving directory '/home/jonathanhai/support/asyn-R4-45/asyn/O.linux-x86_64'
make[1]: *** [/home/jonathanhai/epics-base/configure/RULES_ARCHS:58: install.linux-x86_64] Error 2
make[1]: Leaving directory '/home/jonathanhai/support/asyn-R4-45/asyn'
make: *** [/home/jonathanhai/epics-base/configure/RULES_DIRS:85: asyn.install] Error 2
-
Running:
ls -l ~/support/asyn-R4-45/lib/linux-x86_64/
shows no files (no .so or .a libraries). -
Checking the dependencies:
ldd ~/support/asyn-R4-45/lib/linux-x86_64/libasyn.so | grep tirpc
returns:
ldd: ~/support/asyn-R4-45/lib/linux-x86_64/libasyn.so: No such file or directory
indicating that the shared library is not being created at all.
What I Have Tried
-
Ensured libtirpc is installed and available:
find /usr -name "libtirpc.so*"
Output:
/usr/lib/x86_64-linux-gnu/libtirpc.so
/usr/lib/x86_64-linux-gnu/libtirpc.so.3
/usr/lib/x86_64-linux-gnu/libtirpc.so.3.0.0
-
✅ Confirms
libtirpc.so exists on my system.
-
Added the following to
asyn/configure/CONFIG_SITE :
TIRPC=YES
USR_LIBS += tirpc
USR_LDFLAGS += -L/usr/lib/x86_64-linux-gnu -ltirpc
USR_CFLAGS += -I/usr/include/tirpc
SHARED_LIBRARIES=YES
STATIC_BUILD=NO
-
Performed a full asyn rebuild:
cd ~/support/asyn-R4-45
make realclean
make USR_LDFLAGS="-L/usr/lib/x86_64-linux-gnu -ltirpc"
-
❌ Still no
libasyn.so is created.
-
Checked for errors in the build process:
grep -i "error" asyn_build.log
-
No major compilation errors, but
libasyn.so is still missing.
-
Attempted to force shared library creation by modifying
asynApp/Makefile :
SHARED_LIBRARIES = YES
STATIC_BUILD = NO
-
Rebuilt again → Still no
libasyn.so .
-
Manually created a symbolic link to
libtirpc.so inside asyn/lib/linux-x86_64/ :
cd ~/support/asyn/lib/linux-x86_64
ln -s /usr/lib/x86_64-linux-gnu/libtirpc.so libtirpc.a
Questions
-
Why is asyn not producing
libasyn.so at all?
-
Is there a missing dependency or configuration preventing shared library creation?
-
Are there specific asyn settings that need to be adjusted to force
libasyn.so compilation?
-
Has anyone successfully built
asyn with libtirpc support on a recent Linux distribution (e.g., Ubuntu 22.04, Debian 11)?
-
If so, what specific settings were required?
-
Should I try an older version of
asyn or epics-base ?
-
My current setup uses EPICS Base 7.0.9 and
asyn-R4-45 .
-
I know that my setup should work, as a member of this community kindly let me know that they ran nearly the exact same setup with positive results.
System Information
-
OS: Ubuntu 24.04
-
EPICS Base Version: 7.0.9
-
asyn Version: R4-45
-
TIRPC Installed: Yes (
/usr/lib/x86_64-linux-gnu/libtirpc.so exists)
Final Notes
I have been troubleshooting this issue extensively, and I would really appreciate any guidance or suggestions from the community.
If anyone has encountered this issue before and found a working solution, I would love to hear how you resolved it.
Thanks in advance for your help!
Jonathan Hai
Researcher/Tech Monkey
CNBL | Department of Physics and Astronomy
McMaster University
Sapere Aude
From: Saleh, Ibrahim <saleh at bnl.gov>
Sent: Monday, March 10, 2025 3:14 PM
To: Mark Rivers <rivers at cars.uchicago.edu>; Jonathan Hai <haic at mcmaster.ca>
Subject: RE: Issues Installing Galil EPICS Drivers – sscan & seq Dependencies Not Building
Hi Mark and Jonathan,
I know that “re2c” package is required by the sequencer. I ‘m not sure if it is needed on Ubuntu or not.
Regards,
Ibrahim
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of Mark Rivers via Tech-talk
Sent: Monday, March 10, 2025 2:35 PM
To: Jonathan Hai <haic at mcmaster.ca>
Cc: tech-talk at aps.anl.gov
Subject: RE: Issues Installing Galil EPICS Drivers – sscan & seq Dependencies Not Building
Hi Jonathan,
Last week I successfully built base 7.0.9, asyn, seq, sscan, and Galil on an Ubuntu system with those same specs.
Mark
Hi Mark,
Yes, I did move my support directory to be out of epics-base. It fixed the problem!
Here are my specs:
-
Ubuntu 24.04
-
EPICS 7.0.9
-
GCC 13.3.0
Could these be causing any problems?
Jonathan Hai
Researcher/Tech Monkey
CNBL | Department of Physics and Astronomy
McMaster University
Sapere Aude
Hi Jonathon,
What version of EPICS base are you using? Have you modified anything in it?
Last week you reported a problem building asyn. I could not reproduce your problem, and then Andrew Johnson suggested that you move support/ so it was not under EPICS base. Did you do that, and did it fix your problem?
I am not aware of anyone else reporting a problem with lexer, so there must be something different with your installation. Is this Ubuntu 22? I built base successfully on that last week, including seq and sscan with base 7.0.9.
Mark
Subject: Follow-up: Issues Installing Galil EPICS Drivers –
seq &
sscan Still Not Building
I appreciate the help so far regarding my Galil motor driver installation issues. I've followed the advice given and have attempted multiple fixes, but I’m still unable to get the required dependencies (seq and
sscan ) to build.
Recap of the Issue
-
I need to install the Galil motor drivers, but the build fails because
sscan does not compile. -
sscan fails because
scanProg.o is missing, which (I believe) needs
seq to be installed. -
seq fails to build due to a missing
lexer.c , which should be generated from
lexer.l by
e_flex . -
e_flex is broken on my system, preventing
lexer.c from being created.
Steps I Have Taken So Far
1. Verified e_flex and
antelope Exist in EPICS Base
-
Both
e_flex and
antelope are present in
/home/jonathanhai/epics-base/bin/linux-x86_64/ . -
Running
antelope --version
works, but running e_flex --help
produces an error:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: unknown flag '-'
2. Checked for lexer.l in
seq
-
lexer.l is present in
/home/jonathanhai/support/seq/src/snc/ , but running
e_flex fails with:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: could not create
-
Running
e_flex manually gives:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: can't open skeleton file DEFAULT_SKELETON_FILE
3. Checked for flex.skl (Skeleton File Required
by e_flex )
· find ~/epics-base -name "flex.skl"
returns no results, meaning this file is missing.
· /home/jonathanhai/epics-base/configure/os/Linux/flex.skl: No such file or directory
4. Installed System flex and
bison as an Alternative
· sudo apt install flex bison
-
flex version:
2.6.4 -
bison version:
3.8.2
-
Tried running system
flex manually:
· cd ~/support/seq/src/snc
· flex -o lexer.c lexer.l
o lexer.l:1: premature EOF
5. Rebuilt EPICS Base
· cd ~/epics-base
· make clean
· make
-
No change,
e_flex still does not work.
Current Issues & Questions
-
It fails with "unknown flag '-'" when run manually.
-
It also reports "can't open skeleton file DEFAULT_SKELETON_FILE" when used.
-
Should I be specifying a
FLEX_SKEL environment variable?
-
Why is
lexer.l failing with "premature EOF" when running
flex ?
-
Could
lexer.l be corrupted or incomplete? -
If so, can I manually download a working version?
-
Is there a way to bypass
e_flex and manually create
lexer.c ?
-
If I download a pre-generated
lexer.c , will the build proceed?
-
Would switching to an older version of
seq help?
-
If so, which version would you recommend?
I really appreciate any further guidance on this! Thanks again for your time.
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules
Hi Jonathon,
What version of EPICS base are you using? Have you modified anything in it?
Last week you reported a problem building asyn. I could not reproduce your problem, and then Andrew Johnson suggested that you move support/ so it was not under EPICS base. Did you do that, and did it fix your problem?
I am not aware of anyone else reporting a problem with lexer, so there must be something different with your installation. Is this Ubuntu 22? I built base successfully on that last week, including seq and sscan with base 7.0.9.
Mark
Subject: Follow-up: Issues Installing Galil EPICS Drivers –
seq &
sscan Still Not Building
I appreciate the help so far regarding my Galil motor driver installation issues. I've followed the advice given and have attempted multiple fixes, but I’m still unable to get the required dependencies (seq and
sscan ) to build.
Recap of the Issue
-
I need to install the Galil motor drivers, but the build fails because
sscan does not compile. -
sscan fails because
scanProg.o is missing, which (I believe) needs
seq to be installed. -
seq fails to build due to a missing
lexer.c , which should be generated from
lexer.l by
e_flex . -
e_flex is broken on my system, preventing
lexer.c from being created.
Steps I Have Taken So Far
1. Verified e_flex and
antelope Exist in EPICS Base
-
Both
e_flex and
antelope are present in
/home/jonathanhai/epics-base/bin/linux-x86_64/ . -
Running
antelope --version
works, but running e_flex --help
produces an error:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: unknown flag '-'
2. Checked for lexer.l in
seq
-
lexer.l is present in
/home/jonathanhai/support/seq/src/snc/ , but running
e_flex fails with:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: could not create
-
Running
e_flex manually gives:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: can't open skeleton file DEFAULT_SKELETON_FILE
3. Checked for flex.skl (Skeleton File Required
by e_flex )
· find ~/epics-base -name "flex.skl"
returns no results, meaning this file is missing.
· /home/jonathanhai/epics-base/configure/os/Linux/flex.skl: No such file or directory
4. Installed System flex and
bison as an Alternative
· sudo apt install flex bison
-
flex version:
2.6.4 -
bison version:
3.8.2
-
Tried running system
flex manually:
· cd ~/support/seq/src/snc
· flex -o lexer.c lexer.l
o lexer.l:1: premature EOF
5. Rebuilt EPICS Base
· cd ~/epics-base
· make clean
· make
-
No change,
e_flex still does not work.
Current Issues & Questions
-
It fails with "unknown flag '-'" when run manually.
-
It also reports "can't open skeleton file DEFAULT_SKELETON_FILE" when used.
-
Should I be specifying a
FLEX_SKEL environment variable?
-
Why is
lexer.l failing with "premature EOF" when running
flex ?
-
Could
lexer.l be corrupted or incomplete? -
If so, can I manually download a working version?
-
Is there a way to bypass
e_flex and manually create
lexer.c ?
-
If I download a pre-generated
lexer.c , will the build proceed?
-
Would switching to an older version of
seq help?
-
If so, which version would you recommend?
I really appreciate any further guidance on this! Thanks again for your time.
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules
From: Saleh, Ibrahim <saleh at bnl.gov>
Sent: Monday, March 10, 2025 3:14 PM
To: Mark Rivers <rivers at cars.uchicago.edu>; Jonathan Hai <haic at mcmaster.ca>
Subject: RE: Issues Installing Galil EPICS Drivers – sscan & seq Dependencies Not Building
Hi Mark and Jonathan,
I know that “re2c” package is required by the sequencer. I ‘m not sure if it is needed on Ubuntu or not.
Regards,
Ibrahim
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of Mark Rivers via Tech-talk
Sent: Monday, March 10, 2025 2:35 PM
To: Jonathan Hai <haic at mcmaster.ca>
Cc: tech-talk at aps.anl.gov
Subject: RE: Issues Installing Galil EPICS Drivers – sscan & seq Dependencies Not Building
Hi Jonathan,
Last week I successfully built base 7.0.9, asyn, seq, sscan, and Galil on an Ubuntu system with those same specs.
Mark
Hi Mark,
Yes, I did move my support directory to be out of epics-base. It fixed the problem!
Here are my specs:
-
Ubuntu 24.04
-
EPICS 7.0.9
-
GCC 13.3.0
Could these be causing any problems?
Jonathan Hai
Researcher/Tech Monkey
CNBL | Department of Physics and Astronomy
McMaster University
Sapere Aude
Hi Jonathon,
What version of EPICS base are you using? Have you modified anything in it?
Last week you reported a problem building asyn. I could not reproduce your problem, and then Andrew Johnson suggested that you move support/ so it was not under EPICS base. Did you do that, and did it fix your problem?
I am not aware of anyone else reporting a problem with lexer, so there must be something different with your installation. Is this Ubuntu 22? I built base successfully on that last week, including seq and sscan with base 7.0.9.
Mark
Subject: Follow-up: Issues Installing Galil EPICS Drivers –
seq &
sscan Still Not Building
I appreciate the help so far regarding my Galil motor driver installation issues. I've followed the advice given and have attempted multiple fixes, but I’m still unable to get the required dependencies (seq and
sscan ) to build.
Recap of the Issue
-
I need to install the Galil motor drivers, but the build fails because
sscan does not compile. -
sscan fails because
scanProg.o is missing, which (I believe) needs
seq to be installed. -
seq fails to build due to a missing
lexer.c , which should be generated from
lexer.l by
e_flex . -
e_flex is broken on my system, preventing
lexer.c from being created.
Steps I Have Taken So Far
1. Verified e_flex and
antelope Exist in EPICS Base
-
Both
e_flex and
antelope are present in
/home/jonathanhai/epics-base/bin/linux-x86_64/ . -
Running
antelope --version
works, but running e_flex --help
produces an error:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: unknown flag '-'
2. Checked for lexer.l in
seq
-
lexer.l is present in
/home/jonathanhai/support/seq/src/snc/ , but running
e_flex fails with:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: could not create
-
Running
e_flex manually gives:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: can't open skeleton file DEFAULT_SKELETON_FILE
3. Checked for flex.skl (Skeleton File Required
by e_flex )
· find ~/epics-base -name "flex.skl"
returns no results, meaning this file is missing.
· /home/jonathanhai/epics-base/configure/os/Linux/flex.skl: No such file or directory
4. Installed System flex and
bison as an Alternative
· sudo apt install flex bison
-
flex version:
2.6.4 -
bison version:
3.8.2
-
Tried running system
flex manually:
· cd ~/support/seq/src/snc
· flex -o lexer.c lexer.l
o lexer.l:1: premature EOF
5. Rebuilt EPICS Base
· cd ~/epics-base
· make clean
· make
-
No change,
e_flex still does not work.
Current Issues & Questions
-
It fails with "unknown flag '-'" when run manually.
-
It also reports "can't open skeleton file DEFAULT_SKELETON_FILE" when used.
-
Should I be specifying a
FLEX_SKEL environment variable?
-
Why is
lexer.l failing with "premature EOF" when running
flex ?
-
Could
lexer.l be corrupted or incomplete? -
If so, can I manually download a working version?
-
Is there a way to bypass
e_flex and manually create
lexer.c ?
-
If I download a pre-generated
lexer.c , will the build proceed?
-
Would switching to an older version of
seq help?
-
If so, which version would you recommend?
I really appreciate any further guidance on this! Thanks again for your time.
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules
Hi Jonathon,
What version of EPICS base are you using? Have you modified anything in it?
Last week you reported a problem building asyn. I could not reproduce your problem, and then Andrew Johnson suggested that you move support/ so it was not under EPICS base. Did you do that, and did it fix your problem?
I am not aware of anyone else reporting a problem with lexer, so there must be something different with your installation. Is this Ubuntu 22? I built base successfully on that last week, including seq and sscan with base 7.0.9.
Mark
Subject: Follow-up: Issues Installing Galil EPICS Drivers –
seq &
sscan Still Not Building
I appreciate the help so far regarding my Galil motor driver installation issues. I've followed the advice given and have attempted multiple fixes, but I’m still unable to get the required dependencies (seq and
sscan ) to build.
Recap of the Issue
-
I need to install the Galil motor drivers, but the build fails because
sscan does not compile. -
sscan fails because
scanProg.o is missing, which (I believe) needs
seq to be installed. -
seq fails to build due to a missing
lexer.c , which should be generated from
lexer.l by
e_flex . -
e_flex is broken on my system, preventing
lexer.c from being created.
Steps I Have Taken So Far
1. Verified e_flex and
antelope Exist in EPICS Base
-
Both
e_flex and
antelope are present in
/home/jonathanhai/epics-base/bin/linux-x86_64/ . -
Running
antelope --version
works, but running e_flex --help
produces an error:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: unknown flag '-'
2. Checked for lexer.l in
seq
-
lexer.l is present in
/home/jonathanhai/support/seq/src/snc/ , but running
e_flex fails with:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: could not create
-
Running
e_flex manually gives:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: can't open skeleton file DEFAULT_SKELETON_FILE
3. Checked for flex.skl (Skeleton File Required
by e_flex )
· find ~/epics-base -name "flex.skl"
returns no results, meaning this file is missing.
· /home/jonathanhai/epics-base/configure/os/Linux/flex.skl: No such file or directory
4. Installed System flex and
bison as an Alternative
· sudo apt install flex bison
-
flex version:
2.6.4 -
bison version:
3.8.2
-
Tried running system
flex manually:
· cd ~/support/seq/src/snc
· flex -o lexer.c lexer.l
o lexer.l:1: premature EOF
5. Rebuilt EPICS Base
· cd ~/epics-base
· make clean
· make
-
No change,
e_flex still does not work.
Current Issues & Questions
-
It fails with "unknown flag '-'" when run manually.
-
It also reports "can't open skeleton file DEFAULT_SKELETON_FILE" when used.
-
Should I be specifying a
FLEX_SKEL environment variable?
-
Why is
lexer.l failing with "premature EOF" when running
flex ?
-
Could
lexer.l be corrupted or incomplete? -
If so, can I manually download a working version?
-
Is there a way to bypass
e_flex and manually create
lexer.c ?
-
If I download a pre-generated
lexer.c , will the build proceed?
-
Would switching to an older version of
seq help?
-
If so, which version would you recommend?
I really appreciate any further guidance on this! Thanks again for your time.
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules
|